我正在尝试建立一个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返回未定义
这里是否有解决方法,还是为了在架构中提供“测试”服务?