node.js - 在 Sequelize 中获取刚刚保存的对象的 id?

标签 node.js sequelize.js

所以我有这个代码:

//defining partner
var Partner = sequelize.define('Partner', {
    order: Sequelize.INTEGER,
    image: Sequelize.STRING,
}, {
    tableName: 'partners',
});
//creating partner instance
var partner=Partner.build();
partner.save().success(function(newpartner){
     console.log(newpartner.id);
});

执行此代码时,2 个合作伙伴实例将插入到数据库中。当我访问 partnerid 属性时,会推送第二个。

这是来自控制台的日志:

Executing (default): INSERT INTO `partners` (`updatedAt`,`createdAt`) VALUES ('2014-08-16 13:13:26','2014-08-16 13:13:26');
Executing (default): INSERT INTO `partners` (`id`,`createdAt`,`updatedAt`) VALUES (DEFAULT,'2014-08-16 13:13:26','2014-08-16 13:13:26');

我需要获取合作伙伴的 ID,并将其保存到数据库后发送给客户端。我该如何正确地做呢? 现在我只访问 id 属性而不调用 save() ,因为它无论如何都会保存对象。然而这没有记录。有正确的方法吗?

最佳答案

我设法隔离了问题。

我的错误来自于阅读文档不够彻底。显然,设置关联对象会将实体推送到数据库(例如,与 Doctrine 中不同)。 因此,我的实体在执行以下代码期间被保存(不包含在问题中):

Partner.setManager(manager);

其中Manager是与合作伙伴存在一对多关系的实体。 因此,解决方案是删除 save() 调用并使用 setManager()

中的 success 回调

关于node.js - 在 Sequelize 中获取刚刚保存的对象的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340531/

相关文章:

mysql - Github 项目 Nodejs Web Api

node.js - 如何将 Node.js 应用程序作为自己的进程运行?

node.js - Sequelize transaction.commit() 不提交数据

javascript - 在 sinon.js 中 stub 和/或模拟一个类?

javascript - Firebase 实时数据库触发太多更新事件

javascript - 使用 Sequelize 更新关联表数据的工作示例?

javascript - Sequelize 五5,通天七7 : TypeError: Class constructor Model cannot be invoked without 'new'

node.js - Sequelize,外键作为复合主键

javascript - 即使在 Node.js 中的回调函数之后,函数也会异步运行

node.js - 如何解决以下 browserify 错误?