nodejs MySQL sqlPool.query 插入后 返回的 results中的 insertId 值
时间: 2024-10-10 08:08:41 浏览: 101
Node.js 中使用 `mysql2` 模块创建的 `Pool` 对象有一个 `.query()` 方法来执行 SQL 查询,包括插入操作。对于插入操作,`results` 对象通常不会直接包含 `insertId`,因为 `insertId` 是特定于 MySQL 的信息,它是在客户端通过 `LAST_INSERT_ID()` 函数获取的,而不是查询结果的一部分。
如果你想要获取插入操作的自增 ID,你需要在执行插入之后手动获取。以下是使用 `mysql2` 示例:
```javascript
const pool = createPool(); // 创建数据库连接池
async function insertData(values) {
const [rows] = await pool.query('INSERT INTO your_table SET ?', values);
if (rows.insertId) { // 如果数据库支持 LAST_INSERT_ID()
return rows.insertId;
} else {
// 如果不支持,你可能需要使用事务或者查询最新的主键值
return await new Promise((resolve) => {
pool.query('SELECT LAST_INSERT_ID()', (err, result) => {
if (err) throw err;
resolve(result[0].insert_id); // 假设结果只有一个条目
});
});
}
}
// 使用方法
const id = await insertData({ your_column: 'value' });
console.log('Inserted with ID:', id);
```
在上面的例子中,`insertData` 函数执行插入操作并检查 `rows` 是否有 `insertId` 属性。如果没有,我们使用 `LAST_INSERT_ID()` 或者查询最新插入的ID来获取。
阅读全文
相关推荐



















