javascript - 在 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 }
我知道此时查询对象具有我指定的条件。它显示在日志中
解决方案
推荐阅读
- excel - 查找和替换
- python - 如何在 Django Python 文件中加载静态文件
- reporting-services - SSRS 中的 IIF 条件
- java - Wacom 与 Java 的集成
- python - 使用连接 3 个表的注释获取数据
- aws-appsync - App Sync Resolver 按时间戳按升序排序
- python - Python:如果“if”语句有两个条件,则“if”函数不起作用
- r - Tidyeval quo vs enquo
- macos - shell:检索 Finder 复制的文件的路径
- python - 检查 boost::python::tuple 的值为 None