查询执行时出错
var records = [{name:'John',age:24},{name:'Sarah',age:28},{name:'Linda',age:23}];
connection.getSession().then(session => {
async function insertRecords() {
await Promise.all(records.map(async function (element) {
let util = {};
util['name'] = element['name'];
util['age'] = element['age'] || null;
let query = `INSERT INTO users SET
name =?,
age=?
ON DUPLICATE KEY UPDATE
name=VALUES(name),
age=VALUES(age)`;
session.sql(query).bind([util.name, util.age]).execute()
.then(() => {})
.catch((error) => {
console.error('cannot execute the query');
console.error('error', error);
});
}))
}
insertRecords()
.then(data => console.log('data', data))
.catch(err => console.log('err', err))
}).catch((err) => {
console.error(err);
session.close();
});
我在执行时收到以下错误。
{ 严重性:0, 代码: 5015, sql状态: 'HY000', msg: '太多参数' } }
在你的Promise.all
中,你map
records
但你的解析器函数不返回任何内容。您需要返回承诺。为此,您只需将session.sql
块替换为以下内容:return session.sql(query).bind([util.name, util.age]).execute()
。
这将返回一个向Promise.all
承诺数组,并且它将起作用。错误处理在调用 insertRecords
函数时已经完成,因此无需在解析程序中担心它。