我应该如何处理 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"
}
通过这种结构,可以保证一条路径只有一条街道,并且您可以使用无法覆盖该路径的安全规则。
我正在使用 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"
}
通过这种结构,可以保证一条路径只有一条街道,并且您可以使用无法覆盖该路径的安全规则。