【发布时间】:2019-01-07 05:42:08
【问题描述】:
我在创建节点上有一个 firebase 实时数据库触发器。我的需要是根据同一对象的创建触发器中的某些条件更新属性。我目前的做法如下:
exports.on_order_received_validate_doodle_cash_order = functions.database.ref("/orders/{id}")
.onCreate((change, context) => {
console.log("start of on_order_received_deduct_doodle_cash")
const orderId = context.params.id
const order = change.val();
var db = admin.database();
const orderRef = db.ref('orders/')
return orderRef.child(orderId).update({"_verifiedOrder": true})
})
如您所见,我从上下文中获取订单 ID,然后再次查询对象并更新它。我的问题是我需要做这个马戏团还是可以直接更新它而不再次查询?
【问题讨论】:
-
我不明白。什么是“这个马戏团”? “再次查询”在哪里?仅供参考,
val()不是Change 对象上的方法,但您似乎并没有使用order。 -
关于您的代码逻辑的一个小注释:制作一个仅将标志设置为 true 的触发器并不会增加太多洞察力,因为您还将在客户端知道创建数据时是否存在错误或不。因此,您的
_verifiedOrder标志仅验证数据已创建,客户端已经知道,因为没有引发异常。 -
丹尼斯我把废话删掉以保持问题的相关性。在实际将其设置为 true 之前,我正在做一些处理。
-
好的,那么我下面的回答应该会有所帮助。只需在 return 语句之前再次挤入你的“废话”;-),一切都会好起来的。
-
所以基本上我的代码很好,只是使用你的提示不记录输入方法,更改为快照等正确吗?
标签: firebase firebase-realtime-database google-cloud-functions