Node / Express / Nunjucks: TypeError: Невозможно использовать оператор "in" для поиска "x" в "y"

Я новичок в мире Nunjucks / Express и Node.

У меня есть файл маршрутов, который портирует в значение ввода из поля формы. Мне нужно проверить, содержит ли значение выражение "gov".

Итак, я создал следующее:

router.get('/test/output/', function (req, res) {
  var emailAdress = req.session.data['accountEmail']
  if ('gov' in emailAdress){
    isCS = true
  }
  res.render('test/output.html',{
    'email' : emailAdress,

.... и так далее...

И это дает мне следующую ошибку:

TypeError: Cannot use 'in' operator to search for 'gov' in 'email@email.com'

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

2 ответа

Решение

in Оператор работает только с объектами, а не с строковыми примитивами.

Для поиска внутри строки вы можете использовать includes:

emailAdress.includes('gov')

ES5-совместимая версия (до includes существовало):

emailAdress.indexOf('gov') !== -1

Или, возможно, вы можете проверить, заканчивается ли строка 'gov':

emailAdress.endsWith('gov')

Мой код в итоге выглядел так:

router.get('/test/output/', function (req, res) {

var emailAddress = req.session.data['accountEmail']
var isCS = emailAddress.includes('gov');

res.render('test/output.html',{
'email' : emailAddress,
'cs' : isCS,

'layout' : '2-0',
'h1': 'Create an account',

...так далее. так далее....

Другие вопросы по тегам