修改后钩中的猫鼬对象

时间:2018-09-17 06:46:33

标签: mongoose

我想在诸如post findOneAndUpdate之类的帖子挂钩中修改猫鼬对象,但是由于它是猫鼬对象,因此无法像下面的示例一样向其添加任何属性

MyShema.post('findOneAndUpdate', function(doc) {
    doc["new_field"] = 2;
    return doc;
});

此文档返回的文档没有new_field,我该如何处理?

2 个答案:

答案 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;
    };