javascript - 从 promise 图打印结果

标签 javascript node.js

大家好,我有两种方法。

checkVenueAvailability(venues) {
        var replaced = venues.replace(/\t/g, "");
        var venues = replaced.split(',');
        var length = venues.length;
        Promise.all(venues.map(venue => {
            return new Promise((resolve, reject) => {
                pool.query("SELECT * FROM peminjaman_venue WHERE nama_venue = ?", venue,
                    function (err, rows, fields) {
                        if (err) {
                            return reject(err);
                        }
                        return resolve(rows);
                })
            })
        }))
    }

mengajukan_event(req, res) {
        helper.checkVenueAvailability(req.body.venue_1)
        .then(function (result) {
            console.log(result);
        }).catch(function (err) {
            console.log(err);
        })
}

我想在mengajukan_event中打印checkVenueAvailability的结果。如何实现这一目标。我上面的代码只返回错误。谢谢。

最佳答案

您没有返回任何东西。只需从 Promise.all 返回 promise 即可:

    return Promise.all(venues.map(venue => {
//  ^^^^^^
<小时/>

另请注意,现在有带有基于 Promise 的 API 的数据库适配器可用。或者,如果您无法使用,您可以使用 util.promisify .

const promiseQuery = util.promisify(pool.query);

然后

checkVenueAvailability(venues) {
    var replaced = venues.replace(/\t/g, "");
    var venues = replaced.split(',');
    return Promise.all(venues.map(venue => promiseQuery("SELECT * FROM peminjaman_venue WHERE nama_venue = ?", venue));
}

(我还删除了 var length =venues.length; 因为 length 没有用于任何用途。)

关于javascript - 从 promise 图打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50714579/

相关文章:

node.js - Express Http 请求超时

javascript - Ajax 请求问题 (Liferay)

javascript - 单击“提交”按钮后刷新/重新渲染 UI

angularjs - 使用 pdfMake 通过 Node Express 将 PDF 内容返回到浏览器

javascript - 使用 puppeteer 选择表格的第二行

javascript - 使所需的依赖项可以从包外部访问

node.js - firebase 暂时发送 "There is no user record"?

javascript - 在 Electron 中打开本地文件并在 wavesurfer.js 中渲染

页面加载时的 JavaScript 加载屏幕

javascript - 以父组件内对象的形式从所有子组件获取合并数据 : React JS