Получите имя переменной вместо значения - PullRequest
0 голосов
/ 18 сентября 2018

Используя bash, я думаю, что это возможно, но не уверен насчет JavaScript, скажем, у нас есть это:

    const {masterid} = req.query;

    if (!masterid) {
        return res.status(500).send(new Error('Missing query param "masterid".'));
    }

То, что я хочу сделать, это не жесткий код"masterid" в строке, вместо этого сделать что-то вроде этого:

    const {masterid} = req.query;

    if (!masterid) {
        return res.status(500).send(new Error(`Missing query param "${Reflect(masterid).name()}.".`));
    }

есть ли способ сделать это с помощью Reflect API?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Это может быть возможно для целей тестирования / отладки, но неуместно в производстве.Единственный способ - это каким-то образом изменить его, например, проанализировать, изменить и оценить.Например, rewire использует eval для перехвата переменных модуля верхнего уровня, этот подход не будет работать с переменными области действия.

Из-за этих ограничений JavaScript правильный подходне полагаться на переменные.Не будет проблем с обработкой имен свойств.Утверждения распространены в Node, в этом случае можно использовать вспомогательную функцию:

assertParam(obj, param) {
  assert.ok(obj[param], `Missing param "${param}".`);
}

...

try {
  assertParam(req.query, 'masterid');
} catch (err) {
  return res.status(500).send(err);
}
0 голосов
/ 18 сентября 2018

С этот другой пост

var masterid = 2;
var text = Object.keys({masterid})[0]; //equals "masterid"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...