Как преобразовать строку JavaScript в исполняемый код в node.js - PullRequest
0 голосов
/ 20 января 2019

Я сохранил запрос в базе данных. Я могу получить запрос в виде строки.

INSERT INTO alertsV SET Instance_ID = ${body.add.Instance_ID}

Но ${body.add.Instance_ID} не заменяется значением.

ожидаемый результат должен быть INSERT INTO alertsV SET Instance_ID = 1234

Я использую nodejs. Пожалуйста, помогите мне, как это исправить. Вот функция.

  saveFormData: async function (req, res) {
     let form_id = parseInt(req.body.form_id);
     let body = req.body.form_data;
     let saveQuery = await sails.orientDb.command('select actions.save as 
     saveQuery from form where form_id=' + form_id).one();

     saveQuery = saveQuery.saveQuery; // i can get string here 'INSERT INTO alertsV SET Instance_ID = ${body.add.Instance_ID}'
     let result = await sails.orientDb.command(saveQuery).one();
     return res.json(result);
  }

1 Ответ

0 голосов
/ 20 января 2019

Вы можете заключить строку в обратные метки литерала шаблона и передать ее в eval для запуска интерполяции строки:

saveQuery = eval('`' + saveQuery.saveQuery + '`'); 

const a = 10;
const str = 'test ${a} test';

console.log(eval('`' + str + '`'));

/*
if it's required to wrap the interpolated value into a quotes, 
you can do that by wrapping the embedded expression, prior to interpolation:
*/
console.log(eval('`' + str.replace(/(\${.*})/, '\'$1\'') + '`'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...