我将字符串保存到mongoDB中,预设变量为
'Current time is ${time}'
之后,我正在检索此字符串的其他位置,并希望将值赋给time
它看起来像这样
const time = '15:50'
const response = result //saves string retreived from mongo
res.json({
response: response
})
但是返回'Current time is ${time}'
而不是'Current time is 15:50'
我知道字符串应该是``而不是单引号才能使变量起作用,不确定如何将其作为mongo的输出实现
有人能指出我正确的方向吗?
答案 0 :(得分:1)
这是插值魔法的一个例子,如其他答案所述;)注意,即使没有evil()
;)
var time = '15:50'
var response = 'Current time is ${time}'
var converted = (_=>(new Function(`return\`${response}\`;`))())()
console.log(converted)
答案 1 :(得分:1)
不会对碰巧包含模板文字占位符的字符串变量执行插值。为了进行插值,您必须在代码中包含文字字符串,并使用占位符包含在后面的刻度中:
let time = '15:50';
let message = `Current time is ${time}`
console.log(message); // "Current time is 15:50"
如果您必须在数据库中存储字符串,则必须提供自己的插值占位符机制。
答案 2 :(得分:1)
另一种方法是将字符串和参数传递给函数,并将reduce
传递给参数对象:
var str = 'Current time is ${time}';
var params = { time: '13:30' };
function merge(str, params) {
return Object.keys(params).reduce((out, key) => {
return str.replace(`\${${key}}`, params[key]);
}, '');
}
console.log(merge(str, params));