[英]NodeJS MySQL and Promises - Cannot read property 'query' of undefined?
我只是在學習使用 Promise 並且不確定我遇到的這個錯誤;
Cannot read property 'query' of undefined
我已經簡化了我的查詢,但仍然出現錯誤。 所以我猜它可能與我用於 MySQL 數據庫的類有關。 這是我進行查詢的地方;
var createAudiopost = async function(req, res, next){
let row_a, row_b, row_c, row_d, row_e, row_f;
try {
row_a = await mydb.query( 'SELECT * FROM audioposts');
console.log("success");
res.json({ "title" : title,
"userid" : userid,
"opid" : opid,
"insert
});
}
catch(err) {
console.log(err.message);
}
finally {
mydb.close();
}
}
module.exports = createAudiopost;
在這里,我為 MySQL 數據庫創建了一個類;
const mysql = require( 'mysql' );
let config = {
host : 'localhost',
user : 'user',
password : 'password',
database: 'database'
};
class DataBase {
constructor( config ) {
this.connection = mysql.createConnection( config );
}
query( sql, args ) {
return new Promise( ( resolve, reject ) => {
this.database.query( sql, args, ( err, rows ) => {
if ( err )
return reject( err );
resolve( rows );
} );
} );
}
close() {
return new Promise( ( resolve, reject ) => {
this.connection.end( err => {
if ( err )
return reject( err );
resolve();
} );
} );
}
}
const mydb = new DataBase(config);
為什么我的控制台告訴我查詢未定義?
你需要綁定你的承諾函數:
query( sql, args ) {
return new Promise( function ( resolve, reject ) {
this.connection.query( sql, args, ( err, rows ) => {
if ( err )
return reject( err );
resolve( rows );
} );
}.bind(this) );
}
或者你可以使用別名
query( sql, args ) {
let that = this;
return new Promise( function ( resolve, reject ) {
that.connection.query( sql, args, ( err, rows ) => {
if ( err )
return reject( err );
resolve( rows );
} );
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.