我无法理解node.js中的异步。我读了一堆异步指南,但仍然听不懂。
function findStories (query) {
return new Promise((resolve)=>{
var set = new Set();
db.all('SELECT * FROM story_content', (err, rows) => {
if (err) { console.error(err.message); }
rows.forEach(row => {
if (row.transcription.includes(query)){
set.add(row.story_id);
}
});
var result = [];
set.forEach((id) => {
db.all('SELECT * FROM story WHERE id=?', id, (err, rows) => {
if (err) { console.error(err.message); }
console.log(rows[0]);
result.push(rows[0]);
});
});
});
resolve(result);
});
}
router.get('/search', function(req, res, next) {
findStories('query').then((result) => res.render('search', { title: 'Search', list: result}));
});
任务是为故事创建搜索页面。搜索是通过故事中的关键字进行的(但这并不重要)。页面加载时,我需要打印查询结果。当我尝试启动此代码时,出现UnhandledPromiseRejectionWarning。
我可以通过任何方式在页面之前加载搜索结果表。