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")?当我 运行 过去遇到类似问题时,它对我有用。