今週の学習は、主にNodeJSのデータベースインタラクションに関するものであり、Jadeテンプレートを使用してユーザーが検証したWebサイトを一緒に作成します。主に、いくつかの問題に遭遇しました。
1。MongoDBバージョンが低すぎます
npm err!オペレーティングシステムやアーキテクチャと互換性がない:[email protected]
0.9.9はLinux、Darwin、およびFreeBSDシステムのみをサポートし、最新バージョンはWinsをサポートしています。
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.接続コネクト未定義ストアが表示されます
コードコピーは次のとおりです。
mongostore = require( 'connect-mongo')
app.use(Express.Session({
秘密:settings.cookiesecret、
ストア:新しいMongostore({
DB:settings.db
})
}));
ソースコードは上記の通りです。その理由は、Expressの異なるバージョンに基づいて、Connect-Mongoモジュールが異なる方法で導入されることがわかっています。また、そのreadme.mdには特別なリマインダーがあります。
コードコピーは次のとおりです。
expression4:
var session = require( 'express-session');
var mongostore = require( 'connect-mongo')(session);
app.use(session({
秘密:settings.cookie_secret、
ストア:新しいMongostore({
DB:settings.db、
})
}));
式<4で:
var Express = require( 'Express');
var mongostore = require( 'connect-mongo')(express);
app.use(Express.Session({
秘密:settings.cookie_secret、
ストア:新しいMongostore({
DB:settings.db
})
}));
さまざまなバージョンについては、それに応じて変更してください。
4。概要
この本を勉強した後、私はNodejsとアクティブな外国語のWebサイトの特徴のいくつかを知っています。ノード内のいくつかの一般的なセクションの更新の頻度も学習の難しさを増したため、この本は入門的なものと見なすことができます。次に、実用的な戦闘を通じて帆のバックエンドフレームワークを学ぶ予定です。研究中に発生した問題は、ノートブックにも記録されています。