Использование await по обещанию Bluebird возвращает неопределенное - PullRequest
0 голосов
/ 23 декабря 2018

Я новичок в Promise и async/await.У меня есть следующий фрагмент кода, который формирует запрос мангуста:

// Bluebird's promise

    const Prom = require('bluebird');

    let formSampleQuery = (customerQuery) => {
     return Prom.try(() => {
      customerQuery.where("age").lt("30");
      console.log("Formed Customer Query Object:\n", customerQuery);
      return Prom.resolve(customerQuery);
     })
    }

Затем у меня есть следующий метод, который вызывает этот метод с использованием async/await:

let Customer = require('./src/models/customer.model');

exports.executeQuery = () => {
 return Prom.try(async () => {
  let customerQuery = Customer.find().lean();
  customerQuery = await formSampleQuery(customerQuery);
  console.log('Customer Query at Execute Query:\n', customerQuery) // Output coming undefined at this point
  customerQuery.exec().then(res => {console.log(res)}); // At this point I get "TypeError: Cannot read property 'exec' of undefined"
 });
}

Я получаю полныйcustomerQuery объект в методе formSampleQuery, но когда то же самое возвращается методу executeQuery, он становится неопределенным, и я получаю эту ошибку:

TypeError: Невозможно прочитать свойство 'exec' изundefined

Где я ошибаюсь?

РЕДАКТИРОВАТЬ 1:

Сокращенный вывод объекта запроса на formCustomerQuery следующий..

Query {
  _mongooseOptions: { lean: true },
  _transforms: [],
  mongooseCollection:
   NativeCollection {
     collection: Collection { s: [Object] },
     opts:
      { bufferCommands: true,
        capped: false,
        '$wasForceClosed': undefined },
     name: 'customers',
     collectionName: 'customers',
   .........................
..........................
........................

  _traceFunction: undefined,
  '$useProjection': true }

Я знаю, что на данный момент объект запроса имеет указанное мной условие.Это отображается в журнале

...