1

これは私のスキーマです:

var userschema = new mongoose.Schema({

  user: String,
  imagen: [{ 

              name: String,
              author: String,
              date: { type: Date, default: Date.now },

           }],
  follow: [String]

});

そしてこれはコードです:

usermodel.findOne({ user: req.session.user }, function (err, user){

        usermodel.find({ _id: {$in: user.follow } }, function (err, images){

          console.log(images);

           if (err) throw err;

            res.render('home.ejs', {

              user: user,
              following: images

            });

         });

});

スキーマのfollow配列には_id、実際のユーザーがフォローしているユーザーのが含まれています。私は次のような出力を取得しようとしています:

{ _id: 50fd9c7b8e6a9d087d000006,
   imagen: 
    [ { name: 'fff.png',
        author: 'foo',
        _id: 50fd9ca2bc9f163e7d000006,
        date: Mon Jan 21 2013 20:53:06 GMT+0100 (CET) },
      { name: 'mmm.png',
        author: 'foo',
        _id: 50fda83a3214babc88000005,
        date: Mon Jan 21 2013 21:41:34 GMT+0100 (CET) } ] },
 { _id: 50fd9d3ce20da1dd7d000006,
        imagen: 
          [ { name: 'ddd.jpg',
              author: 'faa',
              _id: 50fda815915e068387000005,
              date: Mon Jan 21 2013 21:42:57 GMT+0100 (CET) } ] }

そして、私はこれと同様の出力を取得しようとしています。たとえば、次のようになります。

  { [ { name: 'fff.png',
        author: 'foo',
        _id: 50fd9ca2bc9f163e7d000006,
        date: Mon Jan 21 2013 20:53:06 GMT+0100 (CET) },
      { name: 'ddd.png',
        author: 'faa',
        _id: 50fda815915e068387000005,
        date: Mon Jan 21 2013 21:42:34 GMT+0100 (CET) }, 
       { name: 'mmm.png',
        author: 'foo',
        _id: 50fda83a3214babc88000005,
        date: Mon Jan 21 2013 21:41:34 GMT+0100 (CET) }
  ] }

私が欲しいのは不可能、または非常に複雑だと思いますが、これに対する解決策はありますか...?

よろしくお願いします!

4

1 に答える 1

0

この行で:

usermodel.find({ _id: {$in: user.follow } }, function (err, images){

imagesは適切な名前ではなく、より適切な名前であるusersか、さらにはdocs(そこにusermodelスキーマのドキュメントの配列があります)。したがってimages、コードにはドキュメントが含まれています。

私はあなたが与えたのと同じスキーマで少しテストをしました。これが私がすべてのuser.imagen配列を結合してからそれらをソートする部分です(もちろんそれはテストケースですが、それは機能します、これがあなたを正しい方法に導くことを願っています):

User.find {}, (err, users) ->
  all_images = []
  # iterate users array to join all imagen arrays
  for user in users
    all_images.push user.imagen
  # flatten nested arrays in all_images with underscore function
  all_images = _.flatten all_images
  # sort all_images the way you want (i.e. descending)
  all_images.sort (a, b) -> b.date - a.date
  # render page and see that it works
  res.render 'test.html', {images: all_images}
于 2013-01-25T20:28:51.440 に答える