Javascript 如何从由另一个节点事件触发的“onWrite”函数中访问Google云函数中的特定节点?

Javascript 如何从由另一个节点事件触发的“onWrite”函数中访问Google云函数中的特定节点?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,创建新节点时,我希望创建相同的数据并将其推送到不同的节点中 Door/111111/ins节点是我将新数据推送到的节点: root: { doors: { 111111111111: { MACaddress: "111111111111", inRoom: "-LBMH_8KHf_N9CvLqhzU", ins: { // I am creating several "key: pair"s here, somethi

创建新节点时,我希望创建相同的数据并将其推送到不同的节点中

Door/111111/ins节点是我将新数据推送到的节点:

root: { 
  doors: {
    111111111111: {
       MACaddress: "111111111111",
       inRoom: "-LBMH_8KHf_N9CvLqhzU",
       ins: {
          // I am creating several "key: pair"s here, something like:
          1525104151100: true,
          1525104151183: true,
       }
    }
  },
  rooms: {
    -LBMH_8KHf_N9CvLqhzU: {
      ins: {
        // I want the function to clone the same data here:
        1525104151100: true,
        1525104151183: true,
      }
    }
  }
这是我的函数,它抛出了一个错误:

TypeError:change.before.ref.parent.child(…).val不是函数

代码:

我的路怎么了?如何让它更新另一个节点?

是一个返回另一个引用对象的方法。引用没有val()方法,因为它不包含任何数据。这只是一个参考


要获取数据库触发器位置之外的数据,需要查询实时数据库以获取数据。使用这种方法。这是非常常见的情况,您应该能够使用示例和文档来确定需要执行的操作。

错误:Reference.child失败:第一个参数是无效的path=“undefined”。路径必须是非空字符串,并且不能包含“.”、“$”、“[”或“]”
谢谢。我希望如此普通的东西会有一两个样本,我也曾寻找过类似的样本。不幸的是我找不到。你能给我指出一个这样做的方法吗(在不同的位置克隆节点)?非常感谢。注意:我去掉了ref…..val()错误,但仍然遇到了麻烦:
错误:Reference.child失败:第一个参数是无效路径=”https://clipclop020.firebaseio.com/doors/111111111111/inRoom". 路径必须是非空字符串,并且不能包含“.”、“$”、“[”、或“]”
我觉得路径非常好:/这听起来是一个不同的问题,需要不同的问题来解释您所做的事情。好的。将创建一个新问题。谢谢。这是新问题:
exports.updateRoom = functions.database.ref('/doors/{MACaddress}/ins').onWrite((change, context) => {
    const beforeData = change.before.val(); // data before the write
    console.log(beforeData); // all good so far
    const afterData = change.after.val(); // data after the write
    console.log(afterData); // all good so far

    const roomPushKey = change.before.ref.parent.child('/inRoom').val(); // ERROR
    console.log(roomPushKey);

    return change.after.ref.parent.parent.parent.child('/rooms').child(roomPushKey).child('/ins').set(afterData);
});