如何将数据Shopify结构化为可以高效查询的Firestore集合

时间:2018-02-15 01:55:59

标签: data-structures firebase-realtime-database google-cloud-functions google-cloud-firestore webhooks

背景

为了尝试为我的电子商务(基于Shopify)网站构建一些后端服务,我设置了一个Firestore触发器,用于创建由web hook POST function provided by Shopify - (orders/Create webhook)更新的每个新订单的订单详细信息。

我当前的云功能

exports.saveOrderDetails = functions.https.onRequest((req, res) => {

var docRef = db.collection('orders').doc(req.body.name);
   const details = req.body;

var setData = docRef.set(req.body).then( a =>{
    res.status(200).send();
});

});

哪个能够从webhook中捕获数据并将其存储在我的“orders”集合中的订单号“name”文档中。这就是它在Firestore中的外观:

Deep Nesting in Firestore Fields

我的问题是 - 在body-parser的帮助下(已解析出“name”,在我的屏幕截图中表示为#9999,设置我的文档名称值) - 我怎样才能改进我的云函数用于处理将此webhook POST存储在Firestore的更好的数据结构中并稍后查询它?

1 个答案:

答案 0 :(得分:0)

在审核了有关此问题的评论后,我将此问题移至Firebase-Talk,看来我在此处尝试的功能将接近所谓的“收集组查询”,并被告知{{3 - 或者按照@ jason-berryman

的建议调查I should adjust my data model approach since this feature is currently still on the road map

除了REST APi之外,@ frank-van-puffelen提出了一个很好的建议来研究Firestore REST API

在我的方案中可以缓解这种情况的另一种方法是让我的HTTP Firestore云触发器具有多个解析参数,从而创建更多顶级文档 - 但是这可能会导致缩放失败或由于放置导致成本因素增加我的云功能中更多解析处理逻辑并增加额外的延迟...

我会暂时将我的问题标记为已回答,希望能帮助其他人了解如何在Firestore中的单个集合中处理文档,而不是在他们对建模进行过多设计并需要重新构建之前尝试查询集合他们的应用程序。