代码之家  ›  专栏  ›  技术社区  ›  Leonel Matias Domingos

graphQL与Sequelize和Mysql duplicate字段的关系

  •  0
  • Leonel Matias Domingos  · 技术社区  · 6 年前

    https://www.graphqlbin.com/v2/gLg9FP

    我被这个问题困扰了一天,需要有人帮助。

          module.exports = (sequelize, DataTypes) => {
                const Periodo = sequelize.define('periodo', {
    ...
                        cod_casa: {
                            type: DataTypes.INTEGER(11),
                            allowNull: false,
                            field: 'cod_casa'
                        },
                       ....
                    },
         ...
                );
    
                Periodo.associate = (models) => {
                    Periodo.belongsTo(models.casa);
                };
    
                return Periodo;
            }
    

      const Casa = sequelize.define('casa', {
                    cod_casa: {
                        type: DataTypes.INTEGER(11),
                        allowNull: false,
                        primaryKey: true,
                        autoIncrement: true,
                        field: 'cod_casa'
                    },
    
    .....
        Casa.associate = (models) => {
            Casa.hasMany(models.periodo);
        };
    
        return Casa;
    }
    

    “扩展”:{ “code”:“内部\u服务器\u错误”, “例外”:{ “name”:“SequelizeDatabaseError”, “code”:“ER\u BAD\u FIELD\u ERROR”, “sqlState”:“42S22”, “sql”:“选择 id , cod_casa inicio , fim , preco_semana 作为 precoSemana , preco_dia 作为 precoDia , preco_fimsemana 作为 precoFimsemana , estadia_minima 作为 estadiaMinima , descricao , observacoes , createdAt , updatedAt , 从…起 periodo 作为 周期 . 卡萨科达卡 },

    有人干过这种事吗? 提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Vivek Doshi    6 年前

    Periodo.belongsTo(models.casa,{foreignKey: 'cod_casa'}); // <--- HERE
    

    根据 DOC

    const User = this.sequelize.define('user', {/* attributes */})
    const Company  = this.sequelize.define('company', {/* attributes */});
    
    User.belongsTo(Company); // Will add companyId to user
    
    const User = this.sequelize.define('user', {/* attributes */}, {underscored: true})
    const Company  = this.sequelize.define('company', {
      uuid: {
        type: Sequelize.UUID,
        primaryKey: true
      }
    });
    
    User.belongsTo(Company); // <----- Will add company_uuid to user
    

        2
  •  0
  •   Leonel Matias Domingos    6 年前

    在关系/关联的两个定义中,Fix都由o个自定义外键选项组成

    Periodo.associate = (models) => {
            Periodo.belongsTo(models.casa,**{foreignKey: 'cod_casa'}**);
        };
    

    Casa.associate = (models) => {
            Casa.hasMany(models.periodo,**{ foreignKey: 'cod_casa' }**);
            Casa.hasMany(models.feedback,{ foreignKey: 'cod_casa' });
        };