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 userschema = new mongoose.Schema({

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

              title: String,
              author: String,
              message: String

           }],

});

follow配列には_id、実際のユーザーがフォローしているユーザーのが含まれています。最初のusermodel.findyでfollow配列を取得します。2番目usermodel.findでは、ユーザー名を取得します。

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

そして、最後から3番目usermodel.findで、ユーザーのメッセージを取得しようとしています。前のユーザーの名前を取得しましusermodel.findauthorが、メッセージのは作成したユーザーと同じ値です。問題は、ユーザーの名前を取得する方法です。次のようにユーザーの名前を取得する必要があると思います。

[{ 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 に答える