所以我有这个代码:
//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 个合作伙伴实例将插入到数据库中。当我访问 partner
的 id
属性时,会推送第二个。
这是来自控制台的日志:
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/