了不起的node.js讀書筆記之mongodb數(shù)據(jù)庫交互
這周的學(xué)習(xí)主要是nodejs的數(shù)據(jù)庫交互上,并使用jade模板一起做了一個用戶驗證的網(wǎng)站。主要是遇到了一下幾個問題。
1.mongodb版本過低
npm ERR! Not compatible with your operating system or architecture: mongodb@0.9.9
0.9.9只支持linux,darwin,freebsd這幾個系統(tǒng),最新版本已支持wins。
2.nodejs進(jìn)行insert操作后:無法讀取結(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ù)據(jù)庫已經(jīng)成功但doc為空,更不要說doc[0].email的值了。原因是insert這類操作是異步進(jìn)行的,異步操作默認(rèn)是不返回其結(jié)果的來確定是否運行成功的。需要通過增加第三個參數(shù){safe:ture}來實現(xiàn)這個功能,即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
})
}));
源碼如上,查明原因為基于Express的不同版本,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
})
}));
針對不同的版本,相應(yīng)的修改即可。
4.總結(jié)
經(jīng)過這本書的學(xué)習(xí),知道nodejs的一些特點以及活躍外文站。node中一些熱門板塊的更新頻率也加大了學(xué)習(xí)的難度,這本書也算入門吧。接下來計劃通過實戰(zhàn)學(xué)習(xí)sails后端框架。學(xué)習(xí)中遇到的問題也都記錄在筆記本上。
- Node.js操作MongoDB數(shù)據(jù)庫實例分析
- Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法
- node.js連接MongoDB數(shù)據(jù)庫的2種方法教程
- Node.js對MongoDB數(shù)據(jù)庫實現(xiàn)模糊查詢的方法
- Node.js連接MongoDB數(shù)據(jù)庫產(chǎn)生的問題
- node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務(wù)
- node.js操作mongoDB數(shù)據(jù)庫示例分享
- Node.js中Mongodb數(shù)據(jù)庫操作方法(最新推薦)
相關(guān)文章
node.js報錯:Cannot find module ''ejs''的解決辦法
最近發(fā)現(xiàn)了node.js居然報錯了,錯誤提示為:Cannot find module 'ejs',后來找了找資料發(fā)現(xiàn)解決的方法其實很簡單,下面通過這篇文章來一起看看吧,希望對同樣遇到這個問題的朋友們能有所幫助。2016-12-12
使用Node.js實現(xiàn)base64和png文件相互轉(zhuǎn)換的方法
這篇文章主要介紹了使用Node.js實現(xiàn)base64和png文件相互轉(zhuǎn)換的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
React+react-dropzone+node.js實現(xiàn)圖片上傳的示例代碼
本篇文章主要介紹了React+react-dropzone+node.js實現(xiàn)圖片上傳的示例代碼,非常具有實用價值,需要的朋友可以參考下2017-08-08
nodejs微信開發(fā)之自動回復(fù)的實現(xiàn)
這篇文章主要介紹了nodejs微信開發(fā)之自動回復(fù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Node.js創(chuàng)建Web、TCP服務(wù)器
這篇文章主要介紹了用Node.js創(chuàng)建Web服務(wù)器和TCP服務(wù)器的方法和處理技巧,需要的讀者們學(xué)習(xí)一下吧。2017-12-12
Nodejs下用submit提交表單提示cannot post錯誤的解決方法
這篇文章主要介紹了Nodejs下用submit提交表單提示cannot post錯誤的解決方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11

