如何使用updateOne更新猫鼬模式内的数组?
我的猫鼬模式在我的Node.Js应用程序上有一个模型。 我的架构的一个字段是数组:
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'参数是一个对象,它包含我需要的所有信息,包括一个包含用于guestsNames的所有字符串的数组(我已经检查了参数是否正确地传递给了对象,它们是否正确) 。除guestsNames字段外,所有字段都使用这段代码进行更新。我在做什么错,如何使guestNames数组正确更新?
干杯。
答案 0 :(得分:1)
您可以像这样直接更新您的阵列
ScreenImage.updateOne(id, { $set : { guestNames : newArray }})
您需要使用$ set替换字段的值,请参见此mongoDB $set
答案 1 :(得分:0)
如果可行,请尝试
screenImageSchema.methods.updateOne = function(id, screenImage) {
const updatedScreenImage = {
company: screenImage.company,
guestsNames[0]: screenImage.guests,
imageName: screenImage.imageName,
defaultImageName: screenImage.defaultImageName,
date: screenImage.date,
activated: screenImage.activated,
wsType: screenImage.wsType
}
ScreenImage.updateOne(id, updatedScreenImage, {new: true});
}