node.js - 在使用 sequelizejs 保存之前获取 ID

标签 node.js express sequelize.js

我想在保存到数据库之前获取项目的 ID...我知道 ID 是在保存过程中生成的,但有解决方案吗?

var photo = dbContext.photo.build(photo);
console.log(photo.id); // doesn't work
photo.save().success(function(photo) {
    console.log(photo.id); // works
    callback(photo);
});

最佳答案

理论上,你可以查询下一个由自增生成的id,见这个How to get the next auto-increment id in mysql

但是,请记住,您必须在事务中执行此操作,在查询之前锁定表,以防止其他进程插入并占用您刚刚获得的 id。看看 https://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

然而,这会变得非常非常复杂,非常非常快。您确定没有其他方法可以解决此问题吗?你不能在保存记录后更新名称,那会容易得多吗?

关于node.js - 在使用 sequelizejs 保存之前获取 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385155/

相关文章:

angularjs - 使用 Angular-cli 创建新项目时出错

javascript - Node 中是否需要使用 eval 来运行另一个文件中的代码

javascript - Node.js+Handlebars+Express如何引用handlebars模板?

javascript - Moz API 调用超时

javascript - beforeUpdate 似乎没有被调用

node.js - 如何保持小写的 Sequelize 关联名称?

Javascript:如何从 mysql 查询中过滤对象数组推送

node.js - 我得到 - 错误 : Entry not found in cache - during sls deploy

javascript - 在 Getters 后面封装方法

sequelize.js - Sequelize 允许用户输入 "null",即使使用 allowNull : false