[已解决]mongoose的find(query, fields, options, callback){}问题
我在Post.find(query, fields, options, function(err, results){}中,把fields设置为[’_id’]就会报500 TypeError: Invalid select() argument. Must be a string or object.
exports.index = function(req, res, next){
var current_page = parseInt(req.query.page, 10) || 1;
var limit = 15;
var render = function(posts, pages){
res.render('index', {
posts: posts,
});
}
var proxy = new EventProxy();
proxy.assign('posts', render);
var where = {};
var options = {skip: 0, limit: limit, sort: {create_at: 1}};
postCtrl.find_posts_by_query(where, options, function(err, posts){
if(err){
return next(err);
}
proxy.trigger('posts', posts);
});
}
exports.find_posts_by_query = function(where, options, callback){
Post.find(where, ['_id'], options, function(err, results){
if(err){
return callback(err, null);
}
if(results.length == 0){
return callback(err, []);
}
var posts_id = [];
for(var i = 0; i < results.length; i++){
posts_id.push(results[i]._id);
}
var proxy = new EventProxy();
var done = function(){
return callback(null, posts);
}
var posts = [];
proxy.after('posts.ready', posts_id.length, done);
var where = {};
for(var i = 0; i < posts_id.length; i++){
(function(i){
where = {_id: posts_id[i]};
find_post_by_query_once(where, function(err,post, author){
if(err){
callback(err);
}
post.author = author;
proxy.trigger('posts.ready');
});
})(i);
}
});
}
原因是fields不是数组而是字符串,多字段用空格分隔
1 回复
嗯,字段前面加-
表示非