感谢您对此的关注!我试图用一个查询来更新MySQL中的一些记录。但是,我正在使用带有Promises的类来创建一组同步查询,但似乎无法正常工作。这是我目前拥有的:
req.body是具有两个键/值对的对象的数组...
API:
router.post('/verified', (req, res) => {
let database = new Database(dbOptions);
let verifiedItemsArray = [];
let sqlQueryArray = [];
let updateQuery = 'UPDATE `raw_unverified` SET `funding_source` = ? WHERE `ritm_number` = ?';
let verifiedItemArray = [req.body[0].funding_source, req.body[0].ritm_number];
database.beginTransaction([updateQuery], verifiedItemArray)
.then(response => console.log(response))
.catch(error => console.log(error));
res.send('Update Successful');
});
数据库类:
class Database {
constructor(config) {
this.connection = mysql.createConnection(config);
}
query(sqlQuery, sqlArgs) {
console.log(sqlQuery);
return new Promise( (resolve, reject) => {
this.connection.query(sqlQuery, ((sqlArgs) ? [sqlArgs] : null), (error, results) => {
if (error) return reject(error);
resolve(results);
});
});
}
beginTransaction(sqlQueries, sqlArgs) {
return new Promise( (resolve, reject) => {
let allResults = [];
this.connection.beginTransaction( (error) => {
if (error) return reject(error);
for (let i = 0; i < sqlQueries.length; i++) {
this.query(sqlQueries[i], ((sqlArgs) ? sqlArgs[i] : null))
.then((results) => {
allResults.push(results);
})
.catch((error) => {
throw error;
});
}
this.connection.commit( (error) => {
if (error) return reject(error);
resolve(allResults);
});
});
});
}
}
module.exports = Database;
这是我得到的错误:
UPDATE
raw_unverified
SETfunding_source
=吗?ritm_number
=吗?(节点:8216)UnhandledPromiseRejectionWarning:错误:ER_PARSE_ERROR:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'?'附近使用正确的语法。在第1行
任何帮助将不胜感激,任何我能做得更好的事情,请随时指出!
提前感谢大家!
答案 0 :(得分:0)
在这一行
this.query(sqlQueries[i], ((sqlArgs) ? sqlArgs[i] : null))
您正在按索引将参数传递给查询-这意味着您需要进行更改
database.beginTransaction([updateQuery], verifiedItemArray)
到
database.beginTransaction([updateQuery], [verifiedItemArray])