在Sequelize中获取刚刚保存的对象的ID?

时间:2014-08-16 13:16:31

标签: 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个伙伴实例插入数据库。当我访问id的{​​{1}}属性时,会推送第二个。

以下是来自控制台的日志:

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属性,因为它无论如何都会保存对象。然而,这没有记录。有没有正确的方法呢?

1 个答案:

答案 0 :(得分:0)

我成功地解决了这个问题。

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

Partner.setManager(manager);

其中Manager是与合作伙伴的oneToMany关系中的实体。 所以解决方法是删除save()调用并使用success

中的setManager()回调