【问题标题】:Firebase cloud function / notificationFirebase 云功能/通知
【发布时间】:2018-06-06 19:33:43
【问题描述】:

我正在尝试使用 firebase 的云功能制作通知功能来部署 我完成了代码的第一部分,并且成功完成了:

'use-strict'
 const functions = require('firebase-functions');

 //const paypal=require('paypal-rest-sdk');

 const admin=require('firebase-admin');


 admin.initializeApp(functions.config().firebase);

 exports.sendNotification=functions.firestore

 .document("Users/{user_id}/Notifications/{notification_id}")
 onWrite((change, context)=>{

  const user_id=context.params.user_id;

  const notification_id=context.params.notification_id;
       });

没有返回承诺,没关系,但是当我尝试像这样完成时:

'use-strict'
 const functions = require('firebase-functions');
  //const paypal=require('paypal-rest-sdk');
   const admin=require('firebase-admin');
   admin.initializeApp(functions.config().firebase);
    exports.sendNotification=functions.firestore
     .document("Users/{user_id}/Notifications/{notification_id}")
      .onWrite((change, context)=>{
     const user_id=context.params.user_id;
     const notification_id=context.params.notification_id;
    return admin.firestore().collection("Users").doc(user_id)
    .collection("Notifications")
    .doc(notification_id)
     .get()
       .then(queryResult=>{
          const from_user_id=queryResult.data().from;
         const from_data=admin.firestore()
                     .collection("Users").doc(from_user_id).get();
          const to_data=admin.firestore().collection("Users")
                 .doc(user_id).get();
           return Promise.all([from_data,to_data]).then(result=>{
            const from_name=result[0].data().name;
             const to_name=result[1].data().name;
             console.log("from :"+from_name+"TO"+to_name);

                    });
                });

// console.log("user_id"+ user_id+ "notification_id"+notification_id);
                 });

我在 node.cm 中有这 2 个错误: 1-避免嵌套承诺 2-每个 then() 应该返回一个值 这个问题怎么解决???

【问题讨论】:

  • 通过此视频系列熟悉在 Cloud Functions 中处理 Promise 的最佳实践。您应该按顺序链接您的承诺。三部分视频系列从这里开始:youtube.com/watch?v=7IkUgCLr5oA

标签: firebase firebase-cloud-messaging google-cloud-firestore google-cloud-functions


【解决方案1】:

Firestore 数据库发生变化时通过 FCM 和云功能发送推送通知

你可以这样试试

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendNotification = functions.firestore
       .document('/users/{documentId}')
       .onWrite((change, context) => {

console.log("CHANGE in DOCUMENT ID : " + context.params.documentId);

// Fetch data using standard accessors
const userId = change.after.data().userId;
const ownerId = change.after.data().ownerId;

console.log('We have a new request UID:', userId, 'for owner:', ownerId);


const owner_data = admin.firestore().collection('users').doc(ownerId).get();
const user_data = admin.firestore().collection('users').doc(userId).get();

return Promise.all([owner_data, user_data]).then(result => {

const ownerFCMToken = result[0].data().fcmToken;
const userName = result[1].data().displayName;

console.log("OWNER Token : " + ownerFCMToken + " USER: " + userName);

const payload = {
        notification: {
          title: 'Test title!',
          body: `${userName} sent you a following request.`
          // icon: follower.photoURL
        }
      };

admin.messaging().sendToDevice(followedFCMToken, payload)
    .then(function (response) {
        console.log("Push response : " + response);
        return response
    })
    .catch(function (error) {
        console.error("Error in sending push");
    });
});

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 2019-02-23
    • 1970-01-01
    • 2021-04-04
    • 2019-12-18
    • 2021-11-20
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多