了不起的node.js讀書(shū)筆記之mongodb數(shù)據(jù)庫(kù)交互
這周的學(xué)習(xí)主要是nodejs的數(shù)據(jù)庫(kù)交互上,并使用jade模板一起做了一個(gè)用戶驗(yàn)證的網(wǎng)站。主要是遇到了一下幾個(gè)問(wèn)題。
1.mongodb版本過(guò)低
npm ERR! Not compatible with your operating system or architecture: mongodb@0.9.9
0.9.9只支持linux,darwin,freebsd這幾個(gè)系統(tǒng),最新版本已支持wins。
2.nodejs進(jìn)行insert操作后:無(wú)法讀取結(jié)果
app.post('/signup', function(req, res, next){
//插入文檔
app.users.insert(req.body.user, function(err, doc){
if(err) return next(err);
res.redirect('/login/' + doc[0].email);
});
});
表象是重定向失敗,真實(shí)情況是插入數(shù)據(jù)庫(kù)已經(jīng)成功但doc為空,更不要說(shuō)doc[0].email的值了。原因是insert這類操作是異步進(jìn)行的,異步操作默認(rèn)是不返回其結(jié)果的來(lái)確定是否運(yùn)行成功的。需要通過(guò)增加第三個(gè)參數(shù){safe:ture}來(lái)實(shí)現(xiàn)這個(gè)功能,即app.users.insert(req.body.user, {safe:ture}, function(){……})。這樣就成功讀取結(jié)果了。
3.connect-connect出現(xiàn)未定義store
MongoStore = require('connect-mongo')
app.use(express.session({
secret:settings.cookieSecret,
store:new MongoStore({
db:settings.db
})
}));
源碼如上,查明原因?yàn)榛贓xpress的不同版本,connect-mongo模塊引入的方式不同。在其Readme.md也特別提示了。
With express4:
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
app.use(session({
secret: settings.cookie_secret,
store: new MongoStore({
db : settings.db,
})
}));
With express<4:
var express = require('express');
var MongoStore = require('connect-mongo')(express);
app.use(express.session({
secret: settings.cookie_secret,
store: new MongoStore({
db: settings.db
})
}));
針對(duì)不同的版本,相應(yīng)的修改即可。
4.總結(jié)
經(jīng)過(guò)這本書(shū)的學(xué)習(xí),知道nodejs的一些特點(diǎn)以及活躍外文站。node中一些熱門(mén)板塊的更新頻率也加大了學(xué)習(xí)的難度,這本書(shū)也算入門(mén)吧。接下來(lái)計(jì)劃通過(guò)實(shí)戰(zhàn)學(xué)習(xí)sails后端框架。學(xué)習(xí)中遇到的問(wèn)題也都記錄在筆記本上。
- node.js操作mongoDB數(shù)據(jù)庫(kù)示例分享
- node.js連接mongoDB數(shù)據(jù)庫(kù) 快速搭建自己的web服務(wù)
- Node.js對(duì)MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)模糊查詢的方法
- node.js連接MongoDB數(shù)據(jù)庫(kù)的2種方法教程
- Node.js連接MongoDB數(shù)據(jù)庫(kù)產(chǎn)生的問(wèn)題
- Node.js中使用mongoose操作mongodb數(shù)據(jù)庫(kù)的方法
- 利用Vue.js+Node.js+MongoDB實(shí)現(xiàn)一個(gè)博客系統(tǒng)(附源碼)
- 利用node.js+mongodb如何搭建一個(gè)簡(jiǎn)單登錄注冊(cè)的功能詳解
- 詳解Wondows下Node.js使用MongoDB的環(huán)境配置
- Node.js操作MongoDB數(shù)據(jù)庫(kù)實(shí)例分析
相關(guān)文章
koa-router源碼學(xué)習(xí)小結(jié)
這篇文章主要介紹了koa-router源碼學(xué)習(xí)小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09初學(xué)者如何快速搭建Express開(kāi)發(fā)系統(tǒng)步驟詳解
這篇文章主要介紹了初學(xué)者如何快速搭建Express開(kāi)發(fā)系統(tǒng),結(jié)合實(shí)例形式詳細(xì)分析了express框架搭建的具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2023-05-05Linux?Ubuntu升級(jí)nodejs版本的簡(jiǎn)單步驟
Node.js是一種對(duì)應(yīng)于JavaScript運(yùn)行時(shí)環(huán)境的編程語(yǔ)言,這篇文章主要給大家介紹了關(guān)于Linux?Ubuntu升級(jí)nodejs版本的簡(jiǎn)單步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12用node-webkit把web應(yīng)用打包成桌面應(yīng)用(windows環(huán)境)
這篇文章主要介紹了windows環(huán)境下用node-webkit把web應(yīng)用打包成桌面應(yīng)用的教程,需要的朋友可以參考下2018-02-02使用NVM實(shí)現(xiàn)不同nodejs版本的自由切換
在工作中,我們可能需要同時(shí)進(jìn)行多個(gè)不同NodeJS版本的項(xiàng)目開(kāi)發(fā),這種情況下,對(duì)于維護(hù)多個(gè)版本的node將會(huì)是一件非常麻煩的事情,NVM就是為解決這個(gè)問(wèn)題而產(chǎn)生的,本文給出了下載、安裝及使用方法,需要的朋友可以參考下2024-02-02解決npm管理員身份install時(shí)出現(xiàn)權(quán)限的問(wèn)題
下面小編就為大家分享一篇解決npm管理員身份install時(shí)出現(xiàn)權(quán)限的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Express URL跳轉(zhuǎn)(重定向)的實(shí)現(xiàn)方法
Express是一個(gè)基于Node.js實(shí)現(xiàn)的Web框架,其響應(yīng)HTTP請(qǐng)求的response對(duì)象中有兩個(gè)用于URL跳轉(zhuǎn)方法res.location()和res.redirect(),使用它們可以實(shí)現(xiàn)URL的301或302重定向。2017-04-04