首页 > 解决方案 > 在 Bluebird 的承诺上使用 await 返回 undefined

问题描述

我对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”

我哪里错了?

编辑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 }

我知道此时查询对象具有我指定的条件。它显示在日志中

标签: javascriptnode.jsmongooseasync-awaitbluebird

解决方案


推荐阅读