Flutter Firebase云函数打字稿

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter Firebase云函数打字稿相关的知识,希望对你有一定的参考价值。

我正在尝试为用户编写云功能以获取通知。我有一个任务模型,其中用户指定一个任务,并写入他向其分配任务的另一个用户的电子邮件ID。enter image description here

添加上述任务后,它应将通知发送给在'Taskgivento'字段中指定的用户

我的用户模型如下enter image description here我有一个用户模型,其中包含用户和子集合的数据,将fcm保存在令牌子集合中。该子集合的id是fcm令牌。

我的云功能

export const sendToDevice = functions.firestore
  .document('Task/TaskId')
  .onCreate(async snapshot => 

   const Taskdata=snapshot.data()

   const querySnapshot = await db
      .collection('users')
      .doc('HMPibf2dkdUPyPiDvOE80IpOsgf1')
      .collection('tokens')
      .get();

    const tokens = querySnapshot.docs.map(snap => snap.id);

    const payload: admin.messaging.MessagingPayload = 
      notification: 
        title: 'New Order!',
        body: 'new notification',
        icon: 'your-icon-url',
        click_action: 'FLUTTER_NOTIFICATION_CLICK'
      
    ;

    return fcm.sendToDevice(tokens, payload);
  );

在const queryshot中,我试图过滤用户模型以获取fcm令牌,以便它将通知Taskgiven的uid传递给emailid。

以上功能有效。我已经在上述模型中手动编写了uid。我需要它来搜索数据库并填充taskgivento电子邮件的uid。我应该如何进行我尝试像在飞镖中一样编写where('email','=','Taskdata.Taskgivento'),但是没有用。它给出了一个错误。

答案
export const sendToDevice = functions.firestore .document('Task/TaskId') .onCreate(async snapshot => const Taskdata = snapshot.data() const email = Taskdata.Taskgivento; const userQuerySnapshot = await db .collection('users') .where('email', '==', email) .get(); const userDocSnapshot = userQuerySnapshot.docs[0]; // Assumption: there is only ONE user with this email const userDocRef = userDocSnapshot.ref; const tokensQuerySnapshot = await userDocRef.collection('tokens').get(); const tokens = tokensQuerySnapshot.docs.map(snap => snap.id); const payload: admin.messaging.MessagingPayload = notification: title: 'New Order!', body: 'new notification', icon: 'your-icon-url', click_action: 'FLUTTER_NOTIFICATION_CLICK' ; await fcm.sendToDevice(tokens, payload); return null; );

您需要:

获取用户文档。请注意where('email', '==', email)==的语法。

    获取此文档的DocumentReference,并基于此参考,查询DocumentReference子集合。

以上是关于Flutter Firebase云函数打字稿的主要内容,如果未能解决你的问题,请参考以下文章

如何在firebase云函数和角度之间共享打字稿类

迁移到打字稿后,Firebase 云功能无法正常工作

Firebase + Flutter - 云函数 onCall 导致 Android 应用出现“未经身份验证”错误

Firebase 云函数在 Flutter 中返回 null,因为它仍在运行

Flutter Firebase Functions:调用函数时出错

如何通过云函数将图像存储在 Firebase 存储中