2017-04-17 15 views
0

私がしようとしているのは、自分のお気に入りに追加した投稿のリストを取得させ、その_idを投稿のお気に入り配列に入れるだけです。mongoose response odd format

この特定のクエリを実行すると、名前のないエントリと_localsが配列内にある配列として戻ってきます。

投稿:[{}、{}]、_localsのようなものが必要です。

どのようにしてその形式に変換できますか?

var UserSchema = new Schema({ 
 
    username : String, 
 
    firstName : String, 
 
    lastName : String, 
 
    email  : String, 
 
    password : String 
 
}); 
 

 
var PostSchema = new Schema({ 
 
    author : { type: Schema.Types.ObjectId, ref: 'User' }, 
 
    date  : Date, 
 
    body  : String, 
 
    username : String, 
 
    sid  : String, 
 
    views  : Number, 
 
    likes  : [{ type: Schema.Types.ObjectId, ref: 'User' }], 
 
    favorites : [{ type: Schema.Types.ObjectId, ref: 'User' }] 
 
}); 
 

 
and the get 
 

 
app.get('/favorites', function(req, res) { 
 
    Post 
 
    .find({ 'favorites': '58f4f9e5650785228016287f'}) 
 
    .exec(function(err, favorites) { 
 
    res.render('favorites', favorites) 
 
    console.log(favorites) 
 
    }) 
 
}); 
 

 
I get a response of 
 
[ { _id: 58f4f9e96507852280162880, 
 
    author: 58f4f9e5650785228016287f, 
 
    body: 'test', 
 
    date: 2017-04-17T17:22:49.059Z, 
 
    username: 'test', 
 
    sid: 'BJ-xquGRl', 
 
    __v: 2, 
 
    favorites: [ 58f4f9e5650785228016287f ], 
 
    likes: [] }, 
 
    { _id: 58f500edd8abc7242c90d61c, 
 
    author: 58f4f9e5650785228016287f, 
 
    body: 'w00p w00p', 
 
    date: 2017-04-17T17:52:45.612Z, 
 
    username: 'test', 
 
    sid: 'BJ8g-tG0e', 
 
    __v: 1, 
 
    favorites: [ 58f4f9e5650785228016287f ], 
 
    likes: [] }, 
 
    _locals: { user: 
 
    { id: 58f4f9e5650785228016287f, 
 
     username: 'test', 
 
     firstName: 'test', 
 
     lastName: 'test', 
 
     email: '[email protected]' } } ]

答えて

1

_localsは、Expressは、あなたがres.render()に渡すオブジェクトに追加します何かされていること。あなたはあなたが作った関数呼び出しを逆に考えた場合、それはもはや存在しないだろう。

console.log(favorites); 
res.render('favorites', favorites); 

しかし、主な問題は、あなたがオブジェクトを期待する、res.render()に引数として配列(favorites)を渡しているということです代わりに。それを呼び出す正しい方法は、オブジェクト値としてを渡すことです:

res.render('favorites', { favorites : favorites }); 
// Or in recent Node versions: 
// res.render('favorites', { favorites });