在使用 Node.js 连接 MySQL 并结合 Promises 时,遇到“无法读取未定义的属性 'query'”的错误,通常是由于以下几个原因造成的:
确保你已经正确地创建了数据库连接,并且该连接对象是可用的。
const mysql = require('mysql');
let connection;
function connectToDatabase() {
return new Promise((resolve, reject) => {
connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
connection.connect(err => {
if (err) {
reject(err);
} else {
resolve(connection);
}
});
});
}
确保在执行 query
方法之前,数据库连接已经成功建立。
connectToDatabase()
.then(conn => {
return new Promise((resolve, reject) => {
conn.query('SELECT * FROM your_table', (error, results) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
})
.then(results => {
console.log(results);
})
.catch(err => {
console.error('Database error:', err);
});
确保 query
方法是在正确的上下文中被调用。
function executeQuery(queryString) {
return new Promise((resolve, reject) => {
if (!connection) {
reject(new Error('No database connection available.'));
return;
}
connection.query(queryString, (error, results) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
}
确保所有的 Promise 都有适当的错误处理机制。
executeQuery('SELECT * FROM your_table')
.then(results => {
console.log(results);
})
.catch(err => {
console.error('Query execution failed:', err);
});
通过上述方法,你应该能够解决“无法读取未定义的属性 'query'”的问题。如果问题仍然存在,请检查是否有其他潜在的错误或遗漏的初始化步骤。
领取专属 10元无门槛券
手把手带您无忧上云