节点js中的异步混乱

时间:2019-12-01 10:04:30

标签: node.js asynchronous async-await

我无法理解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。

我可以通过任何方式在页面之前加载搜索结果表。

0 个答案:

没有答案