cloudfunctions内部nodemailer中firebase中的变量



我在firebase cloud函数中使用nodemailer在多个触发器上向用户发送电子邮件。

基本上它是有效的,有一件事我无法理解:我的超级管理员可以编写新的邮件模板,这些模板以字符串的形式保存到firebase数据库中。举个例子,它包含一个字符串形式的标题:

"Welcome to my App ${status.userData.name}!" 

在我的云功能中,当触发发生时,我会得到这样一个创建的模板:

Status是来自触发器数据库查询的对象:

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}
`....

消息标题的console.log给了我这个:

"Welcome to my App ${status.userData.name}!"

console.log of status.userData.name给我

"prename surname"

问题是,在我收到的电子邮件中,它仍然是${status.userData.name}

感谢您的帮助!

如果有人偶然发现:解决方案其实很简单:

由于变量${msg.title}包含字符串中的变量,我只需要用实际变量替换字符串中的该变量,就像@Doug Stevenson建议的那样:

msg.title = msg.title.replace("${status.userData.email}", status.userData.email);

相关内容

  • 没有找到相关文章

最新更新