Firestore创建订单表单的表示形式

时间:2018-02-22 13:31:50

标签: date firebase timestamp google-cloud-firestore

我是firebase / firestore的新手。感谢你对此的看法。

我正在尝试使用Firestore创建订单。

我在想:

  1. 我是否需要创建集合和文档的年份,月份,日期才能保存所有订单?

    这对我来说是多余的,否则Firestore中的很多数据库都需要大量的日期集合和文档!

    例如:

      

    (CAPS是收集,括号是文件)
         年(2018年) - >月(1月,2月,3月等)
         JAN - > 1(订单#1,订单#2,订单#3等)
         JAN - > 2(订单#1,订单#2等...)

  2. 或者只是在订单表格的每个文件上添加一个简单的时间戳 - 然后如果我想查找一月份的月份,是否有搜索查询来查找特定月份的所有文件?还是约会?

  3. 随着订单的格式化,用户可以输入尽可能多的商品。将每个项目存储为新文档是否正确?因此,每个订单表单可能会创建100多个文档。

    E.g:

      

    订购1个集合 - 香蕉文档,苹果文档,橙色文档

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