我应该如何处理 FireBase 中的这种情况,两个用户使用相同的数据库密钥

How should I handle this situation in FireBase where two users go for same Database key

我正在使用 FireBase push 保存名为 Street 的项目,并获取具有自动生成的 ID 的 Street 项目列表。假设每个 Street 都有一个像 "path" : "unique value" 这样的节点。假设两个用户将要插入一个具有相同 "path" : "unique value" 的新 Street

避免这种情况发生的适当方法是什么?这就像一个网上商店,用户将商品放入购物车,后面的系统现在必须保留该商品,直到用户购买它。

我是否应该像 "reserved_streets" 一样创建一个单独的 FireBase 根目录并让用户添加他的保留 Street 和 user.id 直到他购买它?也许有一个 Servlet 实例 运行 删除 10 分钟前的条目。

Street 列表可能非常大,在 rar 文件中可能有 1 亿个

防止 Firebase 数据库中重复值的典型方法是将这些值转换为键。

因此,如果您当前的模型是(下次,请在您的问题中分享这样一个最小的片段):

streets: {
  "-K1234567": {
    path: "unique path"
  },
  "-K1234568": {
    path: "unique path 2"
  }
}

您将添加一个使用路径作为键的附加结构(或更改现有结构):

pathsToStreets: {
  "unique path": "-K1234567",
  "unique path 2": "-K1234568"
}

通过这种结构,可以保证一条路径只有一条街道,并且您可以使用无法覆盖该路径的安全规则。