【问题标题】:Sequelize returns extra field and both, camel case and snake case foreign fieldsSequelize 返回额外字段和两者,camel case 和snake case 外国字段
【发布时间】:2022-01-11 22:35:41
【问题描述】:

当我通过 Sequelize Model.findAll() 发出请求时,响应中会出现一个 event_id 不在模型中,并且所有外键都进来了蛇和骆驼案。

续集通话:

ChatMessage.findAll({ offset, limit, raw: true });

结果:

{
  campaignId: 1
  campaign_id: 1
  createdAt: "2022-01-11T21:41:39.931Z"
  event_id: null
  id: 3
  isCampaignMessage: true
  media: "https://link.com"
  message: "Text"
  messageFrom: "+11111111111"
  messageTo: "+11111111111"
  sid: "..."
  status: "..."
  targetId: 1
  target_id: 1
}

立即查询:

SELECT "id",
       "target_id"           AS "targetId",
       "message_from"        AS "messageFrom",
       "message_to"          AS "messageTo",
       "message",
       "media",
       "sid",
       "status",
       "campaign_id"         AS "campaignId",
       "is_campaign_message" AS "isCampaignMessage",
       "created_at"          AS "createdAt",
       "campaign_id",
       "event_id",
       "target_id"
FROM "chat_message" AS "ChatMessage"
LIMIT 25 OFFSET 0;

但应该没有最后 3 个 id,因为它们重复。

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    当您添加无效的关联时,可能会出现额外的外部字段。在我的情况下也是如此,event_id 字段的额外关系。

    Event.hasMany(models.Campaign, { foreignKey: 'event_id' });
    Event.hasMany(models.ChatMessage, { foreignKey: 'event_id' }); // <--- Unnecessary association
    Event.hasMany(models.Target, { foreignKey: 'event_i
    

    对于重复出现的情况,有必要将所有关联外键以驼峰式的形式出现。在此之前,他们在蛇盒中。

    ChatMessage.belongsTo(models.Target, { foreignKey: '<target_id INTO targetId>' });
    

    【讨论】:

      猜你喜欢
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      相关资源
      最近更新 更多