Как я могу использовать await для извлечения данных из БД с помощью Bookshelf js? - PullRequest
0 голосов
/ 17 сентября 2018

Я ищу способ получения данных в ожидании, ниже приведен код.

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

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете избежать лишней библиотеки, используя встроенную функцию 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"
        });
    });
...