有效的解析会导致错误输出的catch



Im使用es5,commonjs,使用strict,并将noImplicitAny设置为false。当调用grabUser((函数从数据库中的用户那里获取信息时,我遇到了一个问题。它返回一个catch((err: any) => {}),其中err应该包含某种错误消息。然而,err包括本应作为结果传递给then((result: any) => {})的所有正确数据。

我得到的输出是content err,这表明它已经传递给catch,以及我想要使用的数据库中的所有结果数据。

我的问题是,为什么脚本解析了请求,但仍然捕获,因为这可能是一个错误。但是包含了我想要使用的数据库中的信息,就好像它会继续到then()一样?

class Database {
connection: any;
options: any = {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PWD,
database: process.env.DB_NAME
};
constructor() {
this.connection = mysql.createConnection(this.options);
}
query(sql: string, args: any) {
return new Promise((reject, resolve) => {
this.connection.query(sql, args, (err, rows) => {
if (err) {
console.log("Query Error")
return reject(err);
}
else {
console.log("Query Succsess")
resolve(rows);
}
});
});
}
close() {
return new Promise((reject, resolve) => {
this.connection.end((err) => {
if (err)
return reject(err);
else
resolve();
});
});
}
}
export async function grabUser(item: string, discord: any)
{
var Con = new Database();
// checks if there is a user with the uID in the Database with discord.id
return Con.query(`select ${item} from users where uID = ?`, [discord.id])
.then((result: any) => {
Con.close();
console.log("content result")
console.log(result)
console.log("length")
console.log(result.length)
console.log("type")
console.log(typeof result)
// If there is something that it returned and that its larger than 0
if (result && result.length > 0)
return result[0];
else
return false;
})
.catch((err: any) => {
console.log("content err")
console.log(err)
console.log("length")
console.log(err.length)
console.log("type")
console.log(typeof err)
// log(err);
return false;
});
}

您混淆了resolvereject参数。应该是这样的:

new Promise((resolve, reject) => {
}

最新更新