【问题标题】:Getting id of just saved object In Sequelize?在Sequelize中获取刚刚保存的对象的ID?
【发布时间】:2014-08-17 06:38:01
【问题描述】:

所以我有这个代码:

//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(),因为它无论如何都会保存对象。但是,这没有记录。有合适的方法吗?

【问题讨论】:

  • 我不确定如何解决它,但您应该提交错误报告或检查是否已报告。你用的是什么版本?
  • @furydevoid 是的,我想知道这是否是一个错误。我使用的是 npm install 附带的 1.7.9。

标签: node.js sequelize.js


【解决方案1】:

我设法隔离了问题。

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

Partner.setManager(manager);

其中Manager 是与 Partner 具有 oneToMany 关系的实体。 所以解决方案是删除 save() 调用并使用来自setManager()success 回调

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2011-07-31
    • 2019-08-30
    • 2017-08-07
    • 2011-11-20
    相关资源
    最近更新 更多