我正在开发一个 Android 食品配送应用程序,到目前为止,我已经成功地从 Firebase 创建了一个实时数据库,并且还使用 Firebase 中的身份验证管理用户登录,但现在为了管理他们的订单,我们计划添加一个购物车(添加到购物车)选项)为每个用户但如何为每个用户管理一个唯一的购物车,以便所有订单都不会混淆并且可以轻松跟踪我只能使用 firebase?
一个简单的入门方法是将每个用户的购物车存储在单独的顶级节点下:
carts
$uid
item1: ...
item2: ...
此处的
$uid
只是一个占位符,您将在其中使用 当前用户的 UID。
这种结构允许您轻松查找当前用户的购物车,而无需加载其他用户的数据。您还可以轻松地保护对此数据的访问,以便用户只能看到自己的购物车。有关更多信息,请参阅有关保护用户数据的文档。
您通常只会以如下结构存储购物车中每个产品的 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 数据库中很常见。
另请参阅: