使用Firebase云功能在onUpdate上更新另一个位置

时间:2018-11-17 19:19:04

标签: javascript firebase firebase-realtime-database google-cloud-functions

我正在尝试使某些数据与Firebase云功能保持一致。当数据在主列表中更改时,我希望所有数据在用户的收藏夹列表中更改。

当前,我能够调用该函数并获取正在更改的正确数据的日志,但是我的查询不起作用。我收到以下错误:

TypeError:ref.update不是函数     在exports.itemUpdate.functions.database.ref.onUpdate

这是我的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.itemUpdate = functions.database
  .ref('/items/{itemId}')
  .onUpdate((change, context) => {

  const before = change.before.val();  // DataSnapshot after the change
  const after = change.after.val();  // DataSnapshot after the change

  console.log(after);

  if (before.effects === after.effects) {
    console.log('effects didnt change')
    return null;
  }
  const ref = admin.database().ref('users')
    .orderByChild('likedItems')
    .equalTo(before.title);

  console.log(ref);

  return ref.update(after);
});

我不确定我要去哪里哪里,我感谢解决该问题的所有帮助和指导!

干杯。

1 个答案:

答案 0 :(得分:1)

equalTo()返回一个Query对象。然后,您尝试在该对象上调用update()。请注意,在链接的API文档中,Query没有update()方法。您不能简单地“更新”尚未执行的查询。您将必须使用once()实际执行查询,将结果从快照中的快照中迭代,并使用找到的数据执行进一步的更新。