用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"]