素晴らしいnode.js読書メモ: mongodbデータベースinteraction_node.js

WBOY
リリース: 2016-05-16 16:25:05
オリジナル
1742 人が閲覧しました

今週の研究は主にnodejsデータベースインタラクションに関するもので、jadeテンプレートを使用してユーザー認証Webサイトを構築しました。主な理由は、いくつかの問題に遭遇したためです。

1.mongodb のバージョンが低すぎます

npm ERR! オペレーティング システムまたはアーキテクチャと互換性がありません: mongodb@0.9.9

0.9.9 は Linux、darwin、freebsd システムのみをサポートし、最新バージョンは win をサポートします。

2.nodejs が挿入操作を実行した後: 結果を読み取ることができません

コードをコピーします コードは次のとおりです:

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);
});
});

見た目はリダイレクトが失敗したように見えますが、実際の状況はデータベースへの挿入は成功しましたが、doc[0].email の値は言うまでもなく空です。その理由は、挿入などの操作は非同期で実行され、非同期操作はデフォルトでは操作が成功したかどうかを判断するための結果を返さないためです。この関数は、3 番目のパラメーター {safe:ture}、つまり app.users.insert(req.body.user, {safe:ture}, function(){……}) を追加することで実現する必要があります。このようにして、結果は正常に読み取られます。

3. connect-connect に未定義のストアが表示されます

コードをコピーします コードは次のとおりです:

MongoStore = require('connect-mongo')

app.use(express.session({
シークレット:settings.cookieシークレット、
ストア:新しいMongoStore({
db:settings.db
})
}));

ソースコードは上記の通りです。その理由は Express のバージョンが異なるためであり、connect-mongo モジュールが異なる方法で導入されていることがわかります。 Readme.md には特別な注意事項もあります。

コードをコピーします コードは次のとおりです:

Express4 の場合:
var session = require('express-session');
var MongoStore = require('connect-mongo')(セッション);
app.use(session({
シークレット: settings.cookie_secret,
ストア: new MongoStore({
db: settings.db,
})
}));
Express var Express = require('express');
var MongoStore = require('connect-mongo')(express);
App.use(express.session({
シークレット: settings.cookie_secret,
ストア: new MongoStore({
db: settings.db
})
}));

バージョンが異なる場合は、それに応じて変更してください。

4. 概要

この本を読んだ後、nodejs とアクティブな外国語 Web サイトの機能をいくつか知りました。ノードの一部の人気セクションの更新頻度も、この本を入門書とみなすことができます。次はsailsのバックエンドフレームワークを実戦を通して学んでいく予定です。勉強中に遭遇した問題もノートに記録されます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート