【问题标题】:Sequelize belongsTo change identifierSequelize belongsTo 更改标识符
【发布时间】:2019-04-30 08:32:22
【问题描述】:

我正在尝试使用 sequelize ORM 进行 mysql 查询,以在 friends.user_id 上选择用户名。

到目前为止,我想出了这个解决方案,效果不错,但它选择了 AS Users ON Friends.friend_id 而不是 AS Users ON Friends.user_id

这里描述了关系

db.Friends.belongsTo(db.Users, { as: 'UserOpUsers', sourceKey: 'friend_id', foreignKey: 'user_id' })

查询确实

SELECT `Friends`.`id` AS `friend_id`, `Users`.`username`, `Users`.`id`, `Friends`.`status` FROM `wd_friends_relations` AS `Friends` LEFT OUTER JOIN `info_users` AS `Users` ON `Friends`.`friend_id` = `Users`.`id` WHERE `Friends`.`friend_id` = 2;

但应该可以

SELECT `Friends`.`id` AS `friend_id`, `Users`.`username`, `Users`.`id`, `Friends`.`status` FROM `wd_friends_relations` AS `Friends` LEFT OUTER JOIN `info_users` AS `Users` ON `Friends`.`user_id` = `Users`.`id` WHERE `Friends`.`friend_id` = 2;

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    belongsTo 关联 http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-belongsTo 中没有 sourceKey,它只存在于 HasOne 和 HasMany 关系中。所以使用这样的东西,

    db.Friends.belongsTo(db.Users, { as: 'UserOpUsers', foreignKey: 'user_id' })
    

    它将像这样创建查询,

    SELECT `Friends`.`id` AS `friend_id`, `Users`.`username`, `Users`.`id`, `Friends`.`status` FROM `wd_friends_relations` AS `Friends` LEFT OUTER JOIN `info_users` AS `Users` ON `Friends`.`user_id` = `Users`.`id` WHERE `Friends`.`friend_id` = 2;
    

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2015-12-28
      • 2015-08-06
      相关资源
      最近更新 更多