使用 bookshelf.js/knex.js[mysql] + express.js 获取最后一条记录 ID
get the last record id using bookshelf.js/knex.js[mysql] + express.js
例如,如果我有 2 个表(发票、包含数量的账单项目)通过一对多关系相互连接。 post api 给了我数据。新的账单 ID 将是最后一个 ID+1,所以如果我可以创建一个循环来插入对象,那么 运行
knex.insert(arrayPurchaseItems, 'id').into('purchaseRequests').then()
所以我不需要等待解决账单插入
但是存在采购请求插入未完成就开始插入的风险。有什么想法吗??
在这种情况下,您应该确保您的数据库已经存储了父实体。它只是比处理并发访问的几率、延迟等更简单。
例如,这样的成语在这种情况下可能会有用:
router.post("/save-master-detail",function(req,res){
var payload = req.body // make sure to have bodyParser all set on express
var master = payload.master
var details = payload.details
knex("master").insert(master,"idmaster").then(function(ret){
master.idmaster = ret[0]
details = details.map(function(det){
det.idmaster = master.idmaster
return det
})
return knex("detail").insert(details)
}).then(function(){
res.send("OK") // or any kind of meaningful response
}).catch(function(err){
console.log(err)
res.status(500).send(err)
})
})
knex.select().from('table_name').orderBy([{column:"id",order:"desc"}]).limit(1)
Here we are taking id and sorting it in reverse order.
Then take the last result by limiting the result
例如,如果我有 2 个表(发票、包含数量的账单项目)通过一对多关系相互连接。 post api 给了我数据。新的账单 ID 将是最后一个 ID+1,所以如果我可以创建一个循环来插入对象,那么 运行
knex.insert(arrayPurchaseItems, 'id').into('purchaseRequests').then()
所以我不需要等待解决账单插入 但是存在采购请求插入未完成就开始插入的风险。有什么想法吗??
在这种情况下,您应该确保您的数据库已经存储了父实体。它只是比处理并发访问的几率、延迟等更简单。
例如,这样的成语在这种情况下可能会有用:
router.post("/save-master-detail",function(req,res){
var payload = req.body // make sure to have bodyParser all set on express
var master = payload.master
var details = payload.details
knex("master").insert(master,"idmaster").then(function(ret){
master.idmaster = ret[0]
details = details.map(function(det){
det.idmaster = master.idmaster
return det
})
return knex("detail").insert(details)
}).then(function(){
res.send("OK") // or any kind of meaningful response
}).catch(function(err){
console.log(err)
res.status(500).send(err)
})
})
knex.select().from('table_name').orderBy([{column:"id",order:"desc"}]).limit(1)
Here we are taking id and sorting it in reverse order.
Then take the last result by limiting the result