如何更新猫鼬模式内的数组?

保罗·利马

如何使用updateOne更新猫鼬模式中的数组?

我的 Node.Js 应用程序上有一个模型,它是用 mongoose 模式制作的。我的架构的字段之一是一个数组:

guestsNames: []

我已经能够在这个数组中保存项目,但我没有找到更新其中项目的方法。

这是我的整个架构:

const screenImageSchema = mongoose.Schema({
    company: {
        type: String,
        require: true,
        trim: true
    },
    guestsNames: [],
    imageName: {
        type: String,
        require: true
    },
    defaultImageName: {
        type: String,
        require: true
    },
    date: {
        type: String,
        default: Date.now,
        require: true
    },
    activated: {
        type: String,
        default: 'Enabled'
    },
    wsType: {
        type: String,
        default: 'Image'
    }
}, {timestamps: true});

...和我的 updateOne 方法:

screenImageSchema.methods.updateOne = function(id, screenImage) {
    const updatedScreenImage = {
        company: screenImage.company,
        guestsNames: screenImage.guests,
        imageName: screenImage.imageName,
        defaultImageName: screenImage.defaultImageName,
        date: screenImage.date,
        activated: screenImage.activated,
        wsType: screenImage.wsType
    }

    ScreenImage.updateOne(id, updatedScreenImage, {new: true});
}

传递给函数的“screenImage”参数是一个包含我需要的所有信息的对象,包括一个包含guestNames 的所有字符串的数组(我已经检查了参数是否正确传递给对象并且它们是)。除了guestNames 字段外,所有字段都使用这段代码进行更新。我做错了什么,如何正确更新 guestNames 数组?

干杯。

L. Lecherbonnier

您可以像这样直接更新您的阵列

ScreenImage.updateOne(id, { $set : { guestNames : newArray }})

您需要使用 $set 来替换字段的值,请参阅此mongoDB $set

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章