将Mongoose返回的数组转换为常规JSON

时间:2015-11-07 22:05:23

标签: javascript json node.js mongodb mongoose

Node.js应用中,我想通过Mongoose从数据库中获取一些数据。我是这样做的:

Users.find({_id:userID}).exec(function(err, users){

});

因为users是一个类似Mongoose对象的数组,所以我不能这样做:

users.toJSON();

如果我使用findOne,这是有效的,但现在不起作用。 users.toObject()也无效,我收到此错误:

object has no method 'toObject'

如果我在查询中使用lean(),请执行以下操作:

Users.find({_id:userID}).lean().exec(function(err, users){

});

这有效,但还有其他问题。例如,如果数组值没有值,而不是像这样显示:

myval:[]

根本没有显示键/值对!!

我想要的是,我必须编辑用户结果,显然,它的Mongoose对象我不能。因为我必须将其转换为常规JSON但是如何?

1 个答案:

答案 0 :(得分:0)

只需使用findOne代替find,您就可以编辑实例。

如果你绝对必须使用find,那么知道users参数是用户实例的数组,所以只需循环遍历它们并逐个编辑它们。

Users.find({_id:userID}).exec(function(err, users){
  users.forEach(function(user){
    // edit my user here
  });
});