node.js - 将数据传递给 emailTemplate ejs 文件的问题
问题描述
我正在尝试将令牌传递给作为ejs
文件的电子邮件模板,即emailTemplate.ejs
,但它没有被呈现为数据,而是仅作为测试呈现,即token
变量呈现为token
文本。这是代码:
sendgridMail.setApiKey(sendGridApi)
const email = async (req, res, next) => {
const user = await User.findOne({ email: req.body.email })
let token
if (user) {
token = user.tokens.slice(-1)[0].token
console.log('token before sending email ', token)
}
const filePath = path.join(__dirname, '/../../views/emailTemplate.ejs')
// TO PASS TOKEN TO EMAIL TEMPLATE EJS FILE
ejs.renderFile(filePath, { token: token }, (err, data) => {
if (err) {
console.log('Error in renderFile ', err)
} else {
// console.log('ejs data ', data)
const message = {
to: req.body.email,
from: 'services@codeuino.com',
subject: `Welcome to Donut ${req.body.name.firstName}`,
html: data
}
sendgridMail.send(message).then(
() => {
console.log('sending email')
next()
},
(error) => {
res.status(HttpStatus.BAD_REQUEST).send({
error: process.env.SENDGRID_API_KEY
? error.response.body
: 'Setup SENDGRID_API_KEY environment variable'
})
}
)
}
})
}
这是电子邮件模板 EJS 试图呈现 URL
<p>http://localhost:5000/user/activate/ <=% token %></p> // TOKEN IS NOT GETTING RENDERED HERE
Wreas alraedy 配置为ejs
veiw 引擎server.js
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')
解决方案
我认为这只是一个ejs语法错误。将参数传递给模板应该如下所示。
<%= token %>
推荐阅读
- xmpp - 在 Angular 6 中连接到 Strophe.js
- r - 对于检查空范围的循环
- java - ListView 无法使用上滑面板库滚动
- c# - 在不同的剃须刀页面之间传递和验证数据
- node.js - 使用 NodeJS 调度重复的 HTTP 请求
- javascript - javascript addEventListener mousedown 不会触发
- java - Java:连接类扩展为登录类
- python - Python - 循环遍历 CSV 文件中的特定列
- javascript - Bootstrap 4 Modal 无法在 IE 中打开
- php - Laravel 向集合 JSON 添加单独的键值对