express + knex 获取新增数据的自增id
时间: 2024-10-17 22:09:50 浏览: 31
boilerplate-knex:使用Express和Knex.js的简单样板
在使用Express框架(Node.js的一个web应用开发工具包)搭配Knex(一个SQL查询构建器库)时,获取数据库表中新增数据的自动递增ID通常涉及到插入操作后的查询。当你使用Knex的`insert`方法插入一条新的记录并返回受影响行数时,你可以通过访问生成的事务对象来得到新插入的数据的自增ID。
例如,假设你有一个名为`users`的表,有`id`作为自增长主键:
```javascript
const knex = require('knex')({ /* 配置你的数据库连接 */ });
const { User } = require('./models'); // 假设User模型中有对knex的引用
// 创建一个新的用户实例
const newUser = new User({
name: 'John Doe',
email: 'john.doe@example.com'
});
// 使用Knex的transacting方法在一个事务中插入数据,并获取自增ID
knex.transaction(async (trx) => {
await trx.insert(newUser).into('users');
const lastInsertId = trx.raw('SELECT LAST_INSERT_ID() AS id');
const insertedId = await lastInsertId.first();
console.log(`新添加用户的ID: ${insertedId.id}`);
}).then(() => {
// 执行成功后的操作...
}).catch((err) => {
// 错误处理...
});
```
这里我们使用了`LAST_INSERT_ID()`函数来获取上一次插入操作的自增ID。记住,这取决于数据库的具体实现,比如MySQL、PostgreSQL等有不同的语法。
阅读全文