gpt4 book ai didi

javascript - 通过函数查询firebase实时数据库

转载 作者:行者123 更新时间:2023-12-03 00:33:07 25 4
gpt4 key购买 nike

我正在使用 firebase 函数和 Admin SDK 来实现事件触发器上的函数。我正在尝试在有新更新可用时向用户推送通知。因此,当更新版本从当前版本更改时,我想在用户对象中进行一些更改并将 update_available key 设置为 true

现在,正在跟踪的事件(update_version)的位置和要更改的数据位于完全不同的对象中。对象模型如下:

|root
|- app_info
|- version

|- users
|- <uid>
|- checker
|- update_available: true

到目前为止我还没有实现这一目标:

 function setUpdateValueTrue() {
db.ref().orderByChild("checker/update_available").equalTo("false").once('value', (snapshot) => {
snapshot.forEach((childSnapshot) => {
console.log("got in here");
console.log(childSnapshot.val())
});
})
}

我想这可能是完全错误的。此刻我感觉被困住了。非常感谢任何帮助。我主要关心的是如何绕过 uid 或通过它进行查询。

最佳答案

以下内容应该有效(但未经测试)。

请注意 Promise.all() 的使用,因为您需要并行更新可变数量的 user Node 。

exports.versionUpdate = functions.database.ref('/app_info').onUpdate((change, context) => {
const beforeData = change.before.val(); // data before the update
const afterData = change.after.val(); // data after the update

if (beforeData.version !== afterData.version) {

const promises = [];
const usersRef = admin.database().ref('/users');

return usersRef.once('value', function(snapshot) {
snapshot.forEach(childSnapshot => {
const uid = childSnapshot.key;
promises.push(usersRef.child(uid + '/checker/update_available').set(true));
});
return Promise.all(promises);
});

} else {
return null;
}

});

关于javascript - 通过函数查询firebase实时数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53775601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com