我正在使用FireBase Street
保存名为push
的项目,并获取具有自动生成ID的Street
项目列表。可以说每个Street
都有一个像"path" : "unique value"
这样的节点。假设两个用户即将插入具有相同Street
的新"path" : "unique value"
。
有什么方法可以消除这种情况?这就像一个用户将商品放入购物篮的网上商店,现在系统必须保留此商品直到用户购买。
我应该创建一个单独的FireBase根目录,例如“reserved_streets”,并让用户将其保留的Street
与user.id一起添加,直到他购买它为止?也许有一个Servlet实例正在运行删除10分钟的条目。
Street
列表可能非常大,在rar案例中可能只有1亿
答案 0 :(得分:1)
阻止Firebase数据库中重复值的典型方法是将这些值转换为键。
所以,如果您当前的型号是(下次,请在您的问题中分享这样一个最小的片段):
streets: {
"-K1234567": {
path: "unique path"
},
"-K1234568": {
path: "unique path 2"
}
}
您将添加使用路径作为键的其他结构(或更改现有结构):
pathsToStreets: {
"unique path": "-K1234567",
"unique path 2": "-K1234568"
}
使用此结构可确保路径只有一条街道,您可以使用不能覆盖路径的安全规则。