首页 > 解决方案 > Firestore 数据库结构问题在事务中更新多个文档

问题描述

我有一个包含“属性”集合和“日历”集合的数据库。

在每个日历文档上都有一个字段:“properties”,它是 key 的对象:bool's。

properties: {
    XYZ: true,
    ABC: true,
}

然后我在每个属性上都有一个带有 calendarID 的字段。

calendarID: XYZ

这样我可以看到该属性属于哪个日历以及该日历具有哪些属性。

当我更新日历并添加属性时,我也会更新属性并添加日历键。我在交易中这样做。都好。

当我从日历中删除一个属性时,我的问题就出现了。

我无法将日历上的 bool 字段保存为 false,因为当我更新日历时,它会更新属性,但是该属性可能在不同的日历上处于活动状态。

例子:

  1. 将属性 XYZ 添加到日历 A = XYZ: true
  2. 从日历中删除属性 XYZ A = XYZ: false
  3. 将属性 XYZ 添加到日历 B = XYZ: true
  4. 随机更新日历 A = FAIL,因为这会从属性 XYZ 中删除 calendarID,因为它认为它是错误的。

所以我认为保存密钥: bool 不是正确的方法。

如何正确更新交易中的日历和属性?

我应该使用数组吗?如果我这样做了,那么我不需要将已删除属性的列表传递到事务中吗?

谢谢您的意见。

标签: google-cloud-firestoredatabase-designarchitecture

解决方案


推荐阅读