我想要做的是编写一个javascript函数来访问我的articles
文件中定义的.js
架构。
我已经确定以下查询在mongodb终端中有效:
db.articles.ensureIndex( { "comments.user_id" : 1 } )
db.articles.find( { "comments.user_id" : 987654 } ) // returns all document fields, meaning X and Y including comments
db.articles.find( { "comments.user_id" : 987654 },
{ "title" : 1, "comments.user_id" : 1 }) //some trimming
javascript函数的目的是检索特定用户发出的所有注释,我的下面尝试是否正确对应上面的mongodb查询?风格,语法是否被认为是良好的实践?
exports.allCommentsByUser = function(userId){
db.articles.ensureIndex({"comments.user_id" : 1})
var allComments = db.articles.find({"comments.user_id" : userId},
{ "title" : 1, "comments.user_id" : 1 });
return allComments;
}
问:此外,如何将上述javascript函数转换为闭包函数?
注意:我使用mongoose
作为包装
答案 0 :(得分:1)
这不起作用,因为allComments
是一个Mongoose Query
对象,而不是结果。您需要在allCommentsByUser
方法中添加一个回调参数,该方法将在异步find
调用完成后将结果提供给调用方。
exports.allCommentsByUser = function(userId, callback){
db.articles.find(
{"comments.user_id" : userId},
{ "title" : 1, "comments.user_id" : 1 },
callback);
};
方法的用法:
x.allCommentsByUser(userId, function (err, articles) {
if (err) {
console.error(err);
} else {
console.log(articles);
}
});
不确定你在第二个问题中提出的关于'封闭功能'的内容。