【发布时间】: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