Я видел несколько из этих вопросов, но ответы никогда не кажутся ясными.Мне нужно перебрать объект javascript в моем представлении мопса.В первый раз использую мопса, поэтому я могу упустить что-то очевидное.
Контроллер:
app.get('/search/:keyword', (req, res) => {
scraper
.searchDictionary(req.params.keyword)
.then(words => {
res.render('result', console.log(words))
});
})
Вот фактическая функция, которая делает объект:
function searchDictionary(searchTerm){
const url = `https://www.dictionary.com/browse/${searchTerm}?s=t`
return fetch(`${url}${searchTerm}`)
.then(response => response.text())
.then(body => {
const words = []
const $ = cheerio.load(body);
$('ol').each(function(i, element){
const $element = $(element)
const $definition = $(element).find('li')
const word = {
keyword: searchTerm,
definition: $definition.text(),
speechParts: $('span.luna-pos').text(),
tenses: $('span.luna-inflected-form').text()
}
words.push(word);
});
return words
});
}
Сейчасвсе, что осталось, это перебрать объект на мой взгляд.Я продолжаю получать страшные Cannot read property 'length' of undefined
.Console.log показывает контроллер, отображающий правильные данные.
[{ keyword: 'cat',
definition: 'a person, especially a man.a devotee of jazz.',
speechParts: 'nounverb (used with object),verb (used without object),Verb PhrasesIdioms',
tenses: 'cat·ted,cat·ting.cat·ted,cat·ting.' }]
(есть еще объекты, просто хотел показать пример)
Мой взгляд выглядит так:
body
h1
ul
each word in words
li= word.keyword