我想用 EJS 变量将文本保存到我的数据库 (MongoDB) 中,然后通过 Ajax 检索它,但我不知道如何注入 EJS 变量的值。
目前,检索到视图中的文本保持“Hello <%= booking.nameOfGuest %>, blablablabla”而不是“Hello Louis, blablablabla”。 目标是使自动消息可由用户自定义并预填充文本区域。
Ajax 部分(工作)
<script>
$('select').on('change', function (e) {
// Change language
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
$.ajax({
url: "../retrieveParameter",
type: "get",
data: { name: valueSelected + "_message_sendkey" },
success: function(data) {
$("#message-accessCode").val(data.value);
},
error: function(data) {
}
});
});
</script>
控制器部分(工作)
const Parameter = require("../model/parameter");
exports.retrieveParameter = async (req, res) => {
try {
const parameter = await Parameter.findOne({ name: req.body.name });
res.json({ value: parameter.value });
} catch (err) {
console.log(err);
}
};
我的数据库中的文档示例
{
"_id": {
"$oid": "642ee81165040a00eae95575"
},
"name": "fr_message_sendkey",
"__v": 0,
"value": "Hello <%= booking.nameOfGuest %> ! \nThank you for your booking <%= booking.code %> ..."
}
你知道我如何将值注入我的变量吗?
非常感谢! 路易
我自己没有使用过 EJS,但你可以尝试使用 template literal
基本上你的 object
value
key 拿着一根绳子
尝试这样的事情:
{
"_id": {
"$oid": "642ee81165040a00eae95575"
},
"name": "fr_message_sendkey",
"__v": 0,
"value": `Hello ${<%= booking.nameOfGuest %>} ! \nThank you for your booking ${<%= booking.code %>} ...`
}
这里是另一篇关于如何在 EJS 中使用模板字面量的文章
希望有帮助