【发布时间】:2021-06-23 09:56:45
【问题描述】:
我有一个PUT: /users 端点,它接受多个字段。
在大多数情况下,我只想在带有{merge: true} 的文档上调用.set,以便能够更新单个文档字段而无需删除其他字段。但在另一种情况下,我将更新地图以使其中只有一个值。
例如:
// user doc
displayName: 'Frank'
age: 28
gender: {
male: true
}
orientation: {
female: true
}
displayName 和 age 可以合并,但是当涉及到 gender 和 orientation 时,我想用新的地图完全替换地图。我知道我可以拥有gender: 'male' 的属性,但这不允许可扩展的查询,因为我正在构建一个约会应用程序并且需要有一个尽可能灵活的查询库。
现在说我要打电话给...doc.set({ gender: {female: true} }, {merge: true});
我的文档结构如下所示:
displayName: 'Frank'
age: 28
gender: {
male: true,
female: true,
}
orientation: {
female: true
}
但理想情况下,它会完全替换 gender 地图。即
displayName: 'Frank'
age: 28
gender: {
female: true
}
orientation: {
female: true
}
有人有这方面的经验吗?同样,我想将此结构保留为 Map,以便我可以运行类似的查询
db
.collection('users')
.where(`gender.${myOrientation}`, '==', true)
.where('gender.all', '==', true) <-- for non-gender-specific users
我也知道 array 结构,但 firestore-queries 仅限于每个查询 1 个数组查询。
谢谢!
【问题讨论】:
标签: database firebase google-cloud-firestore nosql