Sequelize returns extra 字段和两者,camel case 和 snake case 外国字段

Sequelize returns extra field and both, camel case and snake case foreign fields

当我通过 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,因为它们会重复。

当您添加无效的关联时,可能会出现额外的外部字段。我的情况也是如此,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>' });