Firebase功能-创建新文档时推送通知

Firebase功能-创建新文档时推送通知,firebase,firebase-realtime-database,google-cloud-firestore,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Firestore,Google Cloud Functions,我有以下Firestore数据库结构: users $USER_ID notifications $DOC1 $DOC2 $DOC3 我想在用户通知集合中创建文档时推送新通知 应该是这样的,但我不知道每$UID有什么方法可以做到这一点: exports.newSubscriberNotification = functions.firestore .document('users/$UID/notifications') .onC

我有以下Firestore数据库结构:

users
  $USER_ID
     notifications
       $DOC1
       $DOC2
       $DOC3
我想在用户通知集合中创建文档时推送新通知

应该是这样的,但我不知道每$UID有什么方法可以做到这一点:

exports.newSubscriberNotification = functions.firestore
  .document('users/$UID/notifications')
  .onCreate(async event => {

如何使用Firebase函数来执行此操作?如果没有办法,有什么解决办法的建议吗?

您应该使用以下代码触发您的云功能:

exports.newSubscriberNotification=functions.firestore
.document('users/{userId}/notifications/{docId}')
.onCreate((快照,上下文)=>{
//您将获得新创建的文档的值,如下所示:
const newValue=snap.data();
console.log(newValue);
//您可以获得如下参数:
const userId=context.params.userId;
//console.log(userId);
const docId=context.params.docId;
//console.log(docId);
//您可以在此处执行通知发送
});

关于发送通知的代码,请看一下Firebase官方云函数示例:

您所说的“我不知道每个$UID有什么方法可以发送通知”?$UID是动态的,可以是任何用户。我没有这个信息我没有任何
userId
documentId
,当为任何用户创建新文档时,推送应该会起作用。这正是这个云函数触发器所做的。如果您在任何
用户
文档的子集合
通知
中创建新文档(具有动态
用户ID
值),将触发云功能。然后必须编写发送通知的代码。我希望这能澄清问题。云函数是否会将
userId
转换为此集合中的任何用户id?当触发云函数时,在
onCreate()
方法中,您将能够获得
通知
集合父用户文档的
userId
的值。我在回答中展示了如何做到这一点(即
constuserid=context.params.userId;
)。我建议您尝试一下我提供的代码:创建并部署您的云功能,然后创建一个用户文档,然后创建一个
notifications
子集合,然后创建一个通知文档,然后查看Firebase控制台中云功能日志中打印的内容(您应该取消对
console.log()的注释)
当然可以!)嘿,雷诺,你能给我简单解释一下当收藏中有新文档时如何显示本地通知吗?我在爱奥尼亚4上试过,但经常崩溃。。。非常感谢。