MongoDBからの情報を表示する非常に単純なアプリケーションを構築しています(Mongooseを使用)。Node.js、Express、およびHandlebarsを使用して、ナビゲーションバーにMongoDBドキュメントのフィールド値を表示します。
文書のフィールド値をナビゲーションバーに表示する場合は、started
です。 これはすべての1ページに表示される必要があります。
{
"_id" : ObjectId("5a4668271f12a77878e97bf1"),
"started" : 1514563623,
"discipline" : "coding",
"isCompleted" : false,
"date" : ISODate("2017-12-29T16:07:03.340Z"),
"__v" : 0
}
私は、ハンドルバーヘルパーの内部で関数を作成しようとしました。しかし、私は通常同じ問題に遭遇する:私はconsole.log
それをすることができますが、私はreturn
できません。
ミドルウェアの作成も試みました。ローカルホスト環境では多かれ少なかれ問題なく動作しますが、プロダクション環境にプッシュすると動作しません。
var currentLogNavBar = function (req, res, next) {
// Load Model
require('./models/Log');
const Log = mongoose.model('logs');
Log.findOne({
isCompleted: false
})
.then(logs => {
res.locals.lastLogSecondsStarted = logs.started || null;
});
next()
}
app.use(currentLogNavBar)
そして、ナビゲーションバーハンドルでそれを呼び出す:
{{{lastLogSecondsStarted}}}
私は問題がnode.js.の非同期性とは何かを持っていると思います
別のアプローチを使用する必要がありますか?私は間違って何をしていますか、どうすればそれを動作させることができますか?
ありがとうございます!
EDIT: MongoDBドキュメントの例を追加しました。