node.js - 如何修复'它想在 var 中设置一个值,但它得到一个 Promise {}'
问题描述
(对不起我的英语,但我正在学习:D)
大家好,我是 node 和 js 的初学者,我想在我的 db 类上创建一个“getPendingKYC”函数,但是当我执行该函数时,我总是收到一个 Promise{},但我想收到结果直接查询而不用 .then 在我的 var 上管理承诺...当我调用函数时,我只想在类外的 var 上获得函数结果的值。
//
// 这是脚本页面
const { Client } = require('pg');
class Db {
constructor() {
this.client = this.dbConnect();
}
dbConnect() {
return new Client({
user: 'xxxxxxxxxxx',
host: 'xxxxxxxxxxx',
database: 'xxxxxxxxxxx',
password: 'xxxxxxxxxxx',
port: 'xxxxxxxxxxx'
});
}
async getPendingKyc() {
this.client.connect();
let data = await this.client.query('SELECT * FROM users')
this.client.end();
return data.rowCount;
};
};
const db = new Db();
let data = db.getPendingKyc();
console.log(data);
如果我在 db.getPendingKyc() 之前放置“等待”,我会收到下一个错误:
让数据 = 等待 db.getPendingKyc(); ^^^^^
SyntaxError: await 仅在异步函数中有效
如果我将 .then 放在 db.getPendingKyc() 之后,我可以正确显示该值,但我想在不这样做的情况下将它放在 var 上。
¿ 我如何才能在不处理课堂外的承诺的情况下直接在 var 上与他一起工作的价值?
解决方案
你需要将你的函数调用包装在 async 函数中以使用 await 所以你的代码应该像
(async()=>{
const db = new Db();
let data = await db.getPendingKyc();
console.log(data);
})()
或者你可以使用then
这样你就可以这样做
const db = new Db();
db.getPendingKyc().then((data)=>{
console.log(data);
}
推荐阅读
- java - Spring JPA 的多租户
- python - SQLITE3:更新数据库时出错
- hdf5 - GDAL:库未加载 libhdf5.100.dylib
- apache-camel - 如何使用 apache camel 在 DynamoDb 中将地图作为属性值?
- python - 在我的 base.html 上显示用户图像 ({{ userprofile.image.url }})
- java - 从带有流的枚举中收集值不起作用
- three.js - 如何在 aframe 中使用 web url 加载 obj-model
- r - 如何将绘图导出到 HTML 页面
- python-3.x - Colabs 文件传输不驱动
- css - 将变量设置为具有相同的属性值