【发布时间】:2020-08-11 20:26:10
【问题描述】:
花了一整天的时间。我真的在为 Typescript 和 Firebase Cloud Functions 苦苦挣扎。 我想 1) 监视我的数据库的“购买”节点。进行新购买时,我想 2) 汇总所有用户的购买,然后 3) 将其发送到我的 CRM (sendinblue)。
我可以让 #1 完成监控。我想出了#3 如何将信息发送到我的 CRM。这是我遇到麻烦的第二个中间步骤。我不知道如何将.once 方法中的信息数组转换为单个值。我只想得到一个像 8.97 这样的数字发送到我的 CRM(即 1.99 + 2.99 + 3.99,仅供参考)。
我的数据库如下所示:
{
"1": {
"price": 1.99,
"product": "Product A",
"subscriptionExpiryDate": 1569445492
},
"2": {
"price": 2.99,
"product": "Product B",
"subscriptionExpiryDate": 1575556926
},
"3": {
"price": 3.99,
"product": "Product C",
"subscriptionExpiryDate": 1587990802
}
这是我的代码:
exports.purchaseTEST3 =
functions.database.ref('/users/{userID}/purchases').onUpdate((change: any, context: any) => {
const userRef = change.after.ref
let totalPurchases = 0
userRef.once("value")
.then(function(snapshot: any[]) {
snapshot.forEach(function(childSnapshot) {
const key = childSnapshot.key
const childData = childSnapshot.val()
totalPurchases = totalPurchases + childData
console.log('TEST3 info:', key, childData, totalPurchases)
// ^ gives "TEST3 info: 123 { price: 456 } 0[object Object][object Object]"
})
})
})
控制台日志如下所示:
TEST 3 info: 0[object Object][object Object][object Object] 3
所以我知道我正在获取信息。我只是不知道如何解析它(或任何术语)。
【问题讨论】:
标签: typescript firebase google-cloud-functions