Node.js mongoose创建退货
我正试图用mongoose制作一个rest api,我想隐藏_v属性,我通过以下操作成功地在find和findById上隐藏了它:Node.js mongoose创建退货,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我正试图用mongoose制作一个rest api,我想隐藏_v属性,我通过以下操作成功地在find和findById上隐藏了它: Contact.find({}, '-__v', function(error, list) { }); Contact.findById(req.params.id, '-__v', function(error, item) { }); 但是当我使用create方法时 Contact.create(req.body, function(error, item
Contact.find({}, '-__v', function(error, list) { });
Contact.findById(req.params.id, '-__v', function(error, item) { });
但是当我使用create方法时
Contact.create(req.body, function(error, item) { });
它返回添加了_v属性的项
我还尝试了在模式上使用select:false这样的方法
__v: {
type: Number,
select: false
}
这个方法也做了同样的事情,它对find和findById隐藏了_v属性,但对clarate方法返回的对象也不隐藏它。在模式中,您可以如下设置它
var Schema = new Schema({...}, { versionKey: false });
在模式中,您可以如下设置它
var Schema = new Schema({...}, { versionKey: false });
您也可以在创建文件文档后使用普通js:
Contact.create(req.body, function(error, item) {
delete item.__v;
//other things
});
您也可以在创建文件文档后使用普通js:
Contact.create(req.body, function(error, item) {
delete item.__v;
//other things
});
但我知道不建议这样做,所以我想保留该属性,但在返回endpointshope上的数据时将其隐藏。这可以帮助您。:)但我知道不建议这样做,所以我想保留该属性,但在返回endpointshope上的数据时将其隐藏。这可以帮助您。:)现在这是一个很好的方法,我对mongo tho很陌生,但是对于一些eason,我无法删除该属性,但是如果我克隆对象并将其从克隆元素中删除,我可以这样做,非常感谢您的帮助answer@PacuraruDaniel我认为您不能删除它,因为
item
是一个“特殊”的Mongoose文档对象。例如,可以使用item=item.toObject()
将其转换为普通对象。或者像你一样克隆它。@MikaS是的,我得出了与你相同的结论,那就是它是一个特殊的对象,它就像一个模式对象,因为我可以调用我在联系人模式上实现的方法,无论如何,非常感谢你的帮助。现在这是一个不错的方法,我对mongo tho很陌生,但对于某些eason,我无法删除该属性,但如果我克隆该对象并将其从克隆的元素中删除,我可以删除该属性,非常感谢您的帮助answer@PacuraruDaniel我认为您不能删除它,因为item
是一个“特殊”的Mongoose文档对象。例如,可以使用item=item.toObject()
将其转换为普通对象。或者像你一样克隆它。@MikaS是的,我得出了与你相同的结论,那就是它是一个特殊的对象,它就像一个模式对象,因为我可以调用我在联系人模式上实现的方法,无论如何,非常感谢你的帮助