为什么我不能将数组作为成员添加到我的对象中

时间:2016-02-11 18:29:33

标签: javascript node.js mongodb mongoose

对于我的express / mongo / mongoose路由器我试图在发送之前将对象附加到另一个对象。不幸的是它永远不会。我错在哪里?

值得注意的是,response_study是一个对象数组,如果重要的话。

此外,response_study不为空。

apiRouter.route('/compounds/:_id')

    .get(function(req, res) {
        Compound.findById(req.params._id, function(err, compound) {
            if (err) res.send(err);

            Study.find({compound_id: compound._id}, function( err, response_study){
               if (err) res.send(err);

               compound["studies"] = response_study;
               console.log(compound);  //logs compound without studies parameter

               res.json(compound);
           });
       });
   })

1 个答案:

答案 0 :(得分:1)

看起来你在使用Mongoose?如果是这样,他们不会返回普通对象,而是返回MongooseDocument个对象。您需要在更改它之前将MongooseDocument转换为普通对象,否则您的更改将不会产生任何影响:

var response = compound.toObject();
response.studies = response_study;
res.json(response);

http://mongoosejs.com/docs/api.html#document_Document-toObject

我使用猫鼬已经有一段时间了,所以它可能是toJSON而不是