首页 > 解决方案 > sequelize 返回同一行的两倍,但大写的情况是第二个

问题描述

对于以下型号

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Execution = sequelize.define('Execution', {
    uuid4 : DataTypes.STRING,
    componentId : DataTypes.INTEGER,
    isComplete : DataTypes.BOOLEAN    
  }, {});
  Execution.associate = function(models) {
    Execution.belongsTo(models.Component, {foreignKey: 'componentId', as: 'component'})
  };
  return Execution;
};

创建新的“执行”时,我得到以下结果:

[
  {
    "id": 1,
    "uuid4": "d520ce1c-e240-4cdf-a584-70c78ef626a7",
    "componentId": 1,
    "createdAt": "2019-08-30T17:55:45.000Z",
    "updatedAt": "2019-08-30T17:55:45.000Z",
    "ComponentId": 1
  }
]

为什么componentId出现两次?一次用大写的“C”?有什么线索吗?

标签: sequelize.js

解决方案


ComponentId默认情况下不是由 sequlize 生成的,因此它必须在代码中的某处键入问题,如果它是由 sequlize 生成的,那么它应该看起来像componentId.

所以它看起来像打字问题,你可能已经定义了Component这样的关联:

Component.hasMany(Execution, { foreignKey: 'ComponentId' }); // <--- HERE
OR
Component.hasOne(Execution, { foreignKey: 'ComponentId' }); // <--- HERE

只需更改ComponentIdcomponentId.


推荐阅读