我是firebase / firestore的新手。感谢你对此的看法。
我正在尝试使用Firestore创建订单。
我在想:
我是否需要创建集合和文档的年份,月份,日期才能保存所有订单?
这对我来说是多余的,否则Firestore中的很多数据库都需要大量的日期集合和文档!
例如:
(CAPS是收集,括号是文件)
年(2018年) - >月(1月,2月,3月等)
JAN - > 1(订单#1,订单#2,订单#3等)
JAN - > 2(订单#1,订单#2等...)
或者只是在订单表格的每个文件上添加一个简单的时间戳 - 然后如果我想查找一月份的月份,是否有搜索查询来查找特定月份的所有文件?还是约会?
随着订单的格式化,用户可以输入尽可能多的商品。将每个项目存储为新文档是否正确?因此,每个订单表单可能会创建100多个文档。
E.g:
订购1个集合 - 香蕉文档,苹果文档,橙色文档
答案 0 :(得分:0)
没有单一的最佳数据模型。这一切都取决于您的应用程序的用例。有关此域名的一般介绍,建议您阅读NoSQL data modeling。
但是在拥有许多文档的集合的Firestore中并不是一个问题。数据库可以扩展到几乎任何数量的文档。
您确实希望在每个订单中存储时间戳。最好的方法就是使用server-side timestamp。然后,您可以使用如下查询查询给定日期范围内的订单:
var now = new Date();
var yesterday = new Date(Date.now() - 24*60*60*1000);
ordersRef.where("timestamp", ">=", yesterday).where("timestamp", "<=", now)
或者
ordersRef.where("timestamp", ">=", "2017-01-01").where("timestamp", "<=", "2017-12-31")
有关更多示例,请参阅Firestore documentation on queries。