Я новичок в 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 }
Я знаю, что на данный момент объект запроса имеет указанное мной условие.Это отображается в журнале