将文本分配给String中的变量

时间:2017-11-18 18:30:58

标签: javascript node.js mongodb

我将字符串保存到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的输出实现

有人能指出我正确的方向吗?

3 个答案:

答案 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));