How to get array of json objects rather than mongoose documents
stackoverflow:How to get array of json objects rather than mongoose documents
项目使用的是mongoose3.x版本,我查询直接用的是
model.findOne(query,fields,opt,function(err,doc));
每次需要给查询出来的结果,给客户端返回结果需要添加新的字段,有两个办法:
1.使用mongoose的toObject()方法:
官方解释:Converts this document into a plain javascript object, ready for storage in MongoDB.
var mo = doc.toObject();
mo.tag = sex;
2.使用set方法:
对于mongoose 3.x 在新建Schema的时候需要显示指定strict的值为false,例如:
var model = new Schema({..}, { strict: false });
如果你使用的是mongoose 2.x,则在新建Schema的时候不需要显示指定strict的值,因为默认值是false
model.findOne(query,fields,opt,function(err,doc));
doc.set('tag','sex');
ps:mongoose 2.x 升级到3.x的坑比较大,升级需谨慎!!!
看下set方法的api:Document#set(path, val, [type], [options])
最后有个参数options,这里设置{ strict: false },可以改变model的模式
// changing strict mode behavior
doc.set(path, value, { strict: false });
关于option: strict解释,看下官方原话:
option: strict
The strict option, (enabled by default), ensures that values passed to
our model constructor that were not specified in our schema do not get saved to the db.
如果strict为treu保证不在schema定义的field不会被写进库里。