用mongoose处理$
这是代码:
usermodel.findOne({ user: req.session.user }, function (err, user){ usermodel.find({ _id: {$in: user.follow } }, { user: true }, function (err, users){ usermodel.find({ author: { $in: users.user }}, function (err, images){ console.log(users); console.log(images); }); });
这是Schema:
var userschema = new mongoose.Schema({
user: String, follow: [String], message: [{ title: String, author: String, message: String }], });
follow
数组包含实际用户所关注的用户的_id
。 用第一个usermodel.find
得到下面的数组。 用第二个usermodel.find
,我得到用户名:
[ { _id: 50fd9c7b8e6a9d087d000006, user: 'Mrmangado' }, { _id: 50fd9d3ce20da1dd7d000006, user: 'kirbo' } ]
而且,用第三个和最后一个usermodel.find
,我试图得到用户的消息。 我在前面的usermodel.find
获取用户的名称,并且该消息的author
具有与创build它的用户相同的值。 问题是我得到用户的名字,我想我必须有这样的用户的名字:
[{ user: 'Mrmangado' }, { user: 'kirbo' }]
如果我收到这样的数组, $in
语句将完美工作。 有没有办法得到这样的输出…?
感谢您的提前!
你确定这就是你想要的吗? author
字段是一个用户的名字,而不是_id
? 如果是这样,你可以将结果对象映射到名称。
var usernames = users.map(function(u) { return u.user; }); //= ["Mrmangado", "kirbo"]