gpt4 book ai didi

javascript - 在 Google Cloud Functions 中更新更改 Firebase 触发器中的引用

转载 作者:行者123 更新时间:2023-11-29 19:05:08 27 4
gpt4 key购买 nike

我有一个看起来像这样的 messages 条目:

firbaseapp
messages
-KiG85eYMH7jfKph4bl3
created: 1492788734743
title: "title"
message: "message"

我想在新条目添加到此列表时发送通知,以便我添加了这个云功能:

exports.sendMessageNotification = functions.database.ref('/messages/').onWrite(event => {

event.data.forEach(message => {

if (message.val().notificationSent) {
return;
}

admin.messaging().sendToTopic(...)
.then(res => {
return db.ref('/messages').child(message.key).update({
notificationSent: (new Date()).getTime(),
});
})
});
});

问题是 message.keymessages-KiG85eYMH7jfKph4bl3 所以当我尝试保存它时,它会创建一个新条目而不是更新现有条目:

firbaseapp
messages
-KiG85eYMH7jfKph4bl3
created: 1492788734743
title: "title"
message: "message"
-messages-KiG85eYMH7jfKph4bl3
notificationSent: 123434554534

我想要的是在现有条目上设置 notificationSent

我也尝试使用 message.ref 但我得到了相同的结果。

那么在云函数中更新 Firebase 中的列表项的最佳方法是什么?

最佳答案

我认为这完成了你想做的事情,也回答了你在评论中的问题:

exports.sendMessageNotification = functions.database.ref('/messages/{messageId}')
.onWrite(event => {
const messageId = event.params.messageId;
console.log('messageId=', messageId);

if (event.data.current.child('notificationSent').val()) {
console.log('already sent');
return;
}

const ref = event.data.ref; // OR event.data.adminRef

admin.messaging().sendToTopic(...)
.then(res => {
return ref.update({
// Caution: this update will cause onWrite() to fire again
notificationSent: (new Date()).getTime(),
});
})
});

关于javascript - 在 Google Cloud Functions 中更新更改 Firebase 触发器中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547345/

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