我正在努力保持一些数据与firebase云函数的一致性。当主列表中的数据发生变化时,我希望用户最喜欢的列表中的所有数据都发生变化。
目前,我可以调用该函数并获得正在更改的正确数据的日志,但我的查询不起作用。我得到以下错误:
类型错误:ref.update不是函数在exports.itemUpdate.functions.database.ref.update
这是我的代码:
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);
});
我不确定我哪里出了问题,我感谢所有的帮助和指导来解决这个问题!
干杯。
equalTo()
返回一个Query对象。然后您将尝试对该对象调用update()
。请注意,在链接的API文档中,Query没有update((方法。您不能简单地"更新"尚未执行的查询。您必须使用once()
实际执行查询,在返回的promise中迭代快照的结果,并使用找到的数据执行进一步的更新。