1

这是代码:

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);


        });
     });

这是架构:

var usersschema = new mongoose.Schema({

  user: String,
  follow: [String],
  message: [{ 

              title: String,
              author: String,
              message: String

           }],

});

follow数组包含_id实际用户关注的用户的 s。用第一个usermodel.findy 得到follow数组。使用第二个usermodel.find,我得到用户名:

[ { _id: 50fd9c7b8e6a9d087d000006, user: 'Mrmangado' },
  { _id: 50fd9d3ce20da1dd7d000006, user: 'kirbo' } ]

而且,对于第三个也是最后一个usermodel.find,我正在尝试获取用户的信息。我在前面得到了用户的名字usermodel.find,并且author消息的值与创建它的用户的值相同。问题是我获取用户名的方式,我想我必须像这样拥有用户名:

[{ user: 'Mrmangado' },
 { user: 'kirbo' }]

如果我收到这样的数组,则该$in语句将完美运行。有没有办法得到这样的输出......?

谢谢提前!

4

1 回答 1

2

你确定那是你想要的吗?该author字段是用户名,而不是它的_id? 如果是这样,您可以只映射结果对象以获取名称。

var usernames = users.map(function(u) { return u.user; });
//= ["Mrmangado", "kirbo"]
于 2013-01-26T00:30:09.250 回答