繁体   English   中英

Node.JS async/await MySQL 获取插入行的结果

[英]Node.JS async/await MySQL get result of inserted row

在 mysql 中插入一行后,我试图检索行 ID。

con.query('INSERT INTO terminals SET ?', {title: 'test'}, function (err, result, fields) {
  console.log(result.insertId);
});

现在我试图在函数之外访问 result.insertId。 使用 async/await 的可能性如何?

这对我不起作用:

const response = await con.query('INSERT INTO terminals SET ?', {title: 'test'}, async function (err, result, fields) {
  return result;
});
console.log(await response.insertId);

您可以创建一个返回承诺的函数。

例如:

function asynqQuery(query, params) {
    return new Promise((resolve, reject) =>{
        con.query(query, params, (err, result) => {
            if (err)
                return reject(err);
            resolve(result);
        });
    });

}

try {
    const response = await asynqQuery('INSERT INTO terminals SET ?', {title: 'test'});
    console.log(response.insertId);
} catch (e) {
    console.error
}

或者您可以尝试使用“util”库中的“promisify”。

试试这个:

response[0].insertId

在:

const response = await con.query('INSERT INTO terminals SET ?', {title: 'test'}, async function (err, result, fields) {
  return result;
});
console.log(response[0].insertId);

结果总是一个数组,几乎只有 1 个元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM