我跟进这篇文章从 Angular 网站发送电子邮件。 https://medium.com/@markgoho/create-a-contact-form-in-angular-using-cloud-functions-for-firebase-5e390bdf5600 电子邮件发送得很好。但是,当云功能成功完成以及出现错误时,我遇到了如何更新 UI 的问题,例如“电子邮件已发送”的消息。或者将发送按钮的颜色更改为绿色。firebase 功能是否对 UI 有任何影响,因为我找不到它?
1 回答
2
您可以做的是将云函数的结果(例如成功或错误)写入实时数据库中的消息文档(即在 下messages/{pushKey}
),并使用侦听器在您的应用程序中侦听此数据库节点的更改。
在 Cloud Function 中,您可以按照以下方式进行操作:
exports.sendContactMessage = functions.database.ref('/messages/{pushKey}').onWrite((data, context) => {
const snapshot = change.after;
const pushKey = context.params.pushKey;
.....
return mailTransport.sendMail(mailOptions)
.then(() => {
const update = {};
updates['/messages/' + pushKey + '/status'] = 'success';
return admin
.database()
.ref()
.update(update);
})
.catch((error) => {
const update = {};
updates['/messages/' + pushKey + '/status'] = 'failure';
return admin
.database()
.ref()
.update(update);
})
请注意,我已将 Cloud Function 语法应用于新版本,请参阅https://firebase.google.com/docs/functions/beta-v1-diff
请注意,对于版本 >= 1.0,您必须将函数初始化为:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
于 2018-09-08T06:11:30.533 回答