Облачная функция Firebase / уведомление - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать функцию уведомления для развертывания с использованием облачных функций 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);
                 });

У меня есть эти 2 ошибки в node.cm: 1-Избегать вложенных обещаний 2-каждый тогда () должен возвращать значение, как я могу исправить эту проблему???

1 Ответ

0 голосов
/ 08 февраля 2019

Отправка push-уведомлений через FCM и облачную функцию при изменении базы данных Firestore

Вы можете попробовать вот так

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");
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...