Node.js, как ответить с помощью объекта RegEx, Hapijs - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь написать конечную точку для возврата набора регулярных выражений, которые мы используем в веб-приложении, для стандартизации их со стороны сервера.

  const myRegExp: RegExp = /^\d{10}$/;
  return reply(myRegExp);

Проблема в том, что этот ответ приходит как {} когда вызывается

Если я отвечаю со строкой, числом, объектом, чем-нибудь в мире ... он приходит через ответ, как и ожидалось.Отвечая параметром типа RegExp, возвращает пустой объект {}

Как я могу отправить необработанное регулярное выражение RegExp в моей конечной точке Node / Hapi?

Да, я знаю, что могуответьте myRegExp.source, а затем заново создайте new RegExp(resp), но это кажется глупым, если меня не заставят.

1 Ответ

0 голосов
/ 11 декабря 2018

причина, по которой hapi возвращает пустой объект, состоит в том, что объект регулярного выражения не имеет открытых свойств.Вы можете увидеть это через консоль.

> let x = new RegExp('/\d/')
> x
/\/d\//
> Object.keys(x)
[]

Я думаю, что правильный способ сделать это - вы можете вернуть myRegExp.source и затем использовать его в своем коде на стороне клиента сnew RegExp(resp) и это не так глупо.

Или вы можете просто вернуть определение регулярного выражения в виде строки типа

reply('/^\d{10}$/')

Затем вы можете использовать его в своем клиентском коде через new RegExp(resp)

Я неЯ думаю, что можно напрямую возвращать оцененный объект регулярного выражения с сервера в браузер.Может быть, вы можете сделать что-то вроде этого;

reply(`const myRegExp = new RegExp(/^\d{10}$/);`).type("application/javascript");

Теперь вы только что загрузили JavaScript с сервера, но я не думаю, что это полезно.

...