我正在开发一款Android Food投放应用。到目前为止,我设法从Firebase创建了一个实时数据库,并使用Firebase中的身份验证管理用户登录。
为了管理他们的订单,我们计划为每个用户添加购物车(添加到购物车选项)。如何为每个用户管理一个独特的购物车,以便所有订单不会混淆并且可以轻松跟踪我只能使用firebase?
答案 0 :(得分:3)
一种简单的入门方法是将每个用户的购物车存放在单独的顶级节点下:
carts
$uid
item1: ...
item2: ...
这里的$uid
只是一个占位符,您可以使用current user的UID。
此结构允许您轻松查找当前用户的购物车,而无需为其他用户加载数据。您还可以轻松保护对此数据的访问权限,以便用户只能看到自己的购物车。有关详情,请参阅documentation on securing user data。
您通常只会将购物车中每件商品的ID存储在以下结构中:
carts
$uid
itemid1: true,
itemid2: true
要了解有关存储集而不是数组的更多信息,请在此处阅读我的答案:http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value
然后,这些ID会引用您存储在另一个顶级列表中的全局产品列表:
products
$productid
itemid1: { ... },
itemid2: { ... }
现在,每次加载用户购物车时,您都会加载购物车中每件商品的详细信息。 Firebase不支持服务器端加入,因此您必须从应用中的代码执行此操作。
另一种方法是将产品的部分数据复制到拥有该产品的用户的购物车中。如果您复制了显示用户购物车所需的信息,则您不必阅读单独的产品以显示购物车。这种类型的数据复制称为非规范化,在Firebase和其他NoSQL数据库中非常正常。
另见: