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

问题描述 投票:0回答:1

我正在寻找一种使用await获取数据的方法,下面是代码。

// 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/awaithttp://bookshelfjs.org/

node.js promise bookshelf.js
1个回答
2
投票

您可以通过使用本机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"
        });
    });
© www.soinside.com 2019 - 2024. All rights reserved.