猫鼬更新属性不在架构中

时间:2020-07-08 17:51:53

标签: javascript mongodb object mongoose

我正在尝试建立一个CRUD应用,该应用可以使人们将某些服务标记为已完成或未完成。
随着时间的流逝,这些服务可能会发生变化,有的会增加,有的会被删除,因此我试图确定是否可以从架构中删除服务,但保留旧文档更新这些服务的能力。

这是我的架构的相关部分:

  services: {
    tom: {
      name: {
        type: String,
        default: "Top of Mind",
        required: true
      },
      status: {
        type: Boolean,
        default: false,
        required: true
      }
    },
    two: {
      name: {
        type: String,
        default: "Service Two",
        required: true
      },
      status: {
        type: Boolean,
        default: false,
        required: true
      }
    },
    three: {
      name: {
        type: String,
        default: "Service Three",
        required: true
      },
      status: {
        type: Boolean,
        default: false,
        required: true
      }
    }
  }

我将strict属性设置为false,以希望更新任何附加服务,即使该附加服务未出现在架构中。 例如,在Mongo Atlas集合中,我将服务手动添加到一个文档中,如下所示:

test: {
  name: "Test Service", 
  status: false
}

这在读取数据时很好用,并且在对请求执行更新之前一直存在,直到尝试更改test.status为止。
返回了整个文档,包括服务下的测试对象,但是doc.services.test未定义,这意味着我无法编辑“ test”的状态。

编辑: 这是查找文档时返回的服务对象:

{ 
  tom: { name: 'Top of Mind', status: true },   
  two: { name: 'Service Two', status: true },   
  three: { name: 'Service Three', status: true },   
  test: { name: 'Service Test', status: false } 
} 

doc.services.test返回未定义

这里是否有解决方法,还是为了在架构中提供“测试”服务?

0 个答案:

没有答案