【发布时间】:2020-04-27 01:49:19
【问题描述】:
我已成功使用 Typescript 中的 Firebase Cloud Function 在创建 Firestore 集合中的文档时向用户发送通知。
但是,因为我将同一个文档存储在两个不同的位置,所以它会发送两次通知。我希望只发送一次通知。
有没有办法使用另一个云函数来获取当前用户,然后在查询中使用它来发送通知的我的函数,因此它只查找针对该特定用户发生的更改中的写入/读取只要?
这是我在 Cloud Functions 中的代码:
export const notificationOnMessageReceived =
functions.firestore
.document('users/{uid}/matches/{match}/messages/{message}') //HOW CAN I GET UID FROM ANOTHER FUNCTION AND USE IT HERE TO SPECIFY EXACTLY THE USER FOR WHICH IT SHOULD RUN?
.onCreate(async snapshot => {
const message = snapshot.get('Message');
const token = snapshot.get('Device token receiver');
console.log('token: ' + token);
const payload = {
notification: {
title: `New message`,
body: `${message}`
}
};
return fcm.sendToDevice(token, payload);
});
【问题讨论】:
-
您能否详细说明您到底想做什么。 “我可以得到uid”:你的意思是
users/{uid}/matches/{match}/messages/{message}下创建文档的用户的uidOR这个路径中uid的值?无论如何,您很可能应该能够在一个 Cloud Function 中完成所有处理。但我们需要更准确的细节来帮助您! -
如果我得到在 users/{uid}/matches/{match}/messages/{message} 下创建文档的用户,它仍然会运行两次,因为同一个用户创建了两个文档。所以这行不通。如果我可以在路径中获取 uid 并且只为一个用户运行该代码,那么这将解决问题。现在因为 {uid} 未定义,它为两个用户运行。
标签: typescript firebase google-cloud-firestore google-cloud-functions