(对不起我的英语,但是我正在学习: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()之前放置“ await”,则会收到下一个错误:
让数据=等待db.getPendingKyc(); ^^^^^
SyntaxError:等待仅在异步功能中有效
如果我将.then放在db.getPendingKyc()之后,则可以正确显示该值,但我希望将其放在不执行此操作的var中。
¿我该如何做才能直接在var上获得与他一起工作的价值,而无需在课堂外处理承诺?
答案 0 :(得分:0)
当没有异步功能时,您可以...
const db = new Db();
db.getPendingKyc().then(function(data) {
console.log(data);
}
答案 1 :(得分:0)
您需要将函数调用包装在异步函数中才能使用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);
}