我想在诸如post findOneAndUpdate之类的帖子挂钩中修改猫鼬对象,但是由于它是猫鼬对象,因此无法像下面的示例一样向其添加任何属性
MyShema.post('findOneAndUpdate', function(doc) {
doc["new_field"] = 2;
return doc;
});
此文档返回的文档没有new_field,我该如何处理?
答案 0 :(得分:0)
对于以下相同情况的其他人为我工作
MyShema.post('findOneAndUpdate', function(doc) {
doc.set("new_field", 2, {strict: false});
doc.set({set: true})
});
严格模式为true,不允许添加新的密钥值,我们必须禁用添加密钥
答案 1 :(得分:0)
我发现起作用的是猫鼬的transform属性,它执行类似的操作
if (!Myschema.options.toObject) Myschema.options.toObject = {};
Myschema.options.toObject.transform = (doc, modified_doc) => {
modified_doc["new_field"] = 2;
return modified_doc;
};