我在firebase cloudfunctions中使用nodemailer来通过多个触发器向用户发送电子邮件。
基本上可以用,我无法理解的一件事是:我的超级管理员可以编写新的邮件模板,这些模板以字符串形式保存到Firebase数据库中。举例来说,它包含一个标题,例如这样的字符串:
"Welcome to my App ${status.userData.name}!"
比起我的云函数,当触发发生时,我得到的是这样创建的模板之一:
状态是触发器数据库查询中的对象:
exports.sendApplication = functions.database.ref('/xx/{userId}/').onUpdate((change, context) => {
let status = change.after.val();
....
let messageRef = admin.database().ref('users').child('admin').child('template').child('welcome');
messageRef.once('value', snap => {
let msg = snap.val();
console.log('message: ', msg);
const mailOptions = {
from: `${status.userData.email}`,
to: `${status.userData.email}`,
subject: `${msg.title}`
html: `
<h1>${msg.title}</h1>
${msg.message}
`....
msg.title的console.log给我这个:
"Welcome to my App ${status.userData.name}!"
status.userData.name的console.log给我
"prename surname"
问题是,在电子邮件中,我仍然是${status.userData.name}
。
感谢您的帮助!
答案 0 :(得分:0)
如果有人绊倒了这个: 解决方案实际上非常简单:
变量$ {msg.title}包含在字符串中的变量,我只需要将字符串中的变量替换为@Doug Stevenson建议的实际变量:
msg.title = msg.title.replace("${status.userData.email}", status.userData.email);