我如何使用 await 从 DB 使用 Bookshelf js 获取数据?

How can I use await to fetch data from DB using Bookshelf js?

我正在寻找一种方法来等待数据使用,下面是代码。

// Await this set of things
    var getResponse = await('pr', 'chat');
    let promise = new Promise((resolve, reject) => {
        resolve("done!");
    });

let chat = new Promise( (resolve, reject) => {
    User
    .where('id', req.body.application_id)
    .fetch({withRelated: ['company']})
    .then(function(result, err) {
        resolve(result);
    });
});

getResponse.keep('pr', promise);
getResponse.keep('chat', chat);


getResponse.then(function(response) {

    console.log('in to reponse:-', response);

    res.status(200).send(response);

},function(err) {

  res.status(400).json({'error' : "Error while fetching data"});
});

在控制台上获得响应是 { pr: Promise { 'done!' }, chat: Promise { <pending> } }

浏览器响应

{
    "pr": {},
    "chat": {}
}

使用https://www.npmjs.com/package/await and http://bookshelfjs.org/

您可以通过使用本机 Promise.all() 函数来避免额外的库,以下示例可能会对您有所帮助

let promise = new Promise((resolve, reject) => {
    resolve("done!");
});

//User.where().fetch() return a promise
let chat = User
    .where('id', req.body.application_id)
    .fetch({
        withRelated: ['company']
    });


Promise.all([promise, chat])
    .then(function (response) {
        var data = {
            promise: response[0],
            chat: response[1]
        }

        console.log('in to reponse:-', response);

        res.status(200).send(data);

    })
    .catch(function (err) {
        res.status(400).json({
            'error': "Error while fetching data"
        });
    });