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',
...так далее. так далее....