IDからユーザー名を取得するために、以下の関数を作成しました。うまくいきません。console.log(result.first_name); と書くことができます。クエリ関数内で、ユーザー名は端末に表示されますが、ブラウザーには表示されません。「return 'something';」を追加してみました 関数の最後で、それがブラウザに表示されるかどうかを確認します – 表示されました. クエリ結果が返されるように関数を作成するにはどうすればよいですか?
関数 (app.js のグローバル関数)
function usernameFromId(id, callback){
db.users.findOne({ _id: ObjectId(id.toString()) }, function(err, result) {
var first_name = result.first_name;
console.log(first_name); // names show up in the console…
callback(first_name);
});
};
ページ ハンドラー (app.js 内)
app.get('/books', function(req, res){
function timeSince(dato){
moment.lang('nb');
return moment(dato).fromNow();
};
db.books.find().sort({ added:-1 }, function(err, docs) {
var books = docs;
db.activity.find().limit(9).sort({ time:-1 }, function(err, docs) {
var activity = docs;
res.render('books', {
books: books,
activity: activity,
timeSince: timeSince,
usernameFromId: usernameFromId
})
});
});
});
テンプレート (books.jade)
- each a in activity
p=usernameFromId(a.user_id, function(name){return name;})