Mongoose 不会用新对象更新文档 属性
Mongoose will not update document with new object property
我有以下架构:
import Mongoose from 'mongoose'
const ThingSchema = new Mongoose.Schema({
name: {
type: String
},
traits: {
type: Object
}
})
const Thing = Mongoose.model('Thing', ThingSchema)
export default Thing
我第一次创建这样的文档并将其保存在数据库中时,我设置了 name: 'something'
和 traits: { propA: 1, propB: 2 }
并且所有内容都已正确保存。
现在我想更新文档并在traits
里面设置一个新的属性:
let thingInDB = await ThingModel.findOne({ name: 'something' })
console.log(thingInDB.traits) // <-- it logs { propA: 1, propB: 2 } as expected
thingInDB.traits.propC = 3
await thingInDB.save()
上面的代码执行时没有错误,但是当我查看数据库时,新的 propC
没有保存在 traits
中。我试过很多次了。
我是不是做错了什么?
我必须明确声明对象的每个 属性:
import Mongoose from 'mongoose'
const ThingSchema = new Mongoose.Schema({
name: {
type: String
},
traits: {
propA: {
type: Number
},
propB: {
type: Number
},
propC: {
type: Number
}
}
})
const Thing = Mongoose.model('Thing', ThingSchema)
export default Thing
您是否尝试过在 .save()
方法之前使用 thingSchema.markModified("trait")
?当我 运行 过去遇到类似问题时,它对我有用。
我有以下架构:
import Mongoose from 'mongoose'
const ThingSchema = new Mongoose.Schema({
name: {
type: String
},
traits: {
type: Object
}
})
const Thing = Mongoose.model('Thing', ThingSchema)
export default Thing
我第一次创建这样的文档并将其保存在数据库中时,我设置了 name: 'something'
和 traits: { propA: 1, propB: 2 }
并且所有内容都已正确保存。
现在我想更新文档并在traits
里面设置一个新的属性:
let thingInDB = await ThingModel.findOne({ name: 'something' })
console.log(thingInDB.traits) // <-- it logs { propA: 1, propB: 2 } as expected
thingInDB.traits.propC = 3
await thingInDB.save()
上面的代码执行时没有错误,但是当我查看数据库时,新的 propC
没有保存在 traits
中。我试过很多次了。
我是不是做错了什么?
我必须明确声明对象的每个 属性:
import Mongoose from 'mongoose'
const ThingSchema = new Mongoose.Schema({
name: {
type: String
},
traits: {
propA: {
type: Number
},
propB: {
type: Number
},
propC: {
type: Number
}
}
})
const Thing = Mongoose.model('Thing', ThingSchema)
export default Thing
您是否尝试过在 .save()
方法之前使用 thingSchema.markModified("trait")
?当我 运行 过去遇到类似问题时,它对我有用。