【问题标题】:Error: Unrecognized data type for field classMethods错误:字段类方法的数据类型无法识别
【发布时间】:2017-07-06 12:14:45
【问题描述】:

使用以下模型定义时:

var address = connection.define('address', {
    id : {
        type :sequelize.INTEGER ,
        primaryKey : true ,
        autoIncrement : true
    },
    content : sequelize.TEXT ,
    classMethods : {
        associate : function(model){
            var user  = model.user; 
            user.hasMany(address);
        }
    }
});

我无法调试:Error: Unrecognized data type for field classMethods

【问题讨论】:

    标签: javascript database sequelize.js


    【解决方案1】:

    我错过了括号并面临这个问题

    'use stri
    
    ct';
    
    module.exports = function(sequelize, DataTypes) {
        var category = sequelize.define('category', {
            name: DataTypes.STRING,
            image_url: DataTypes.STRING,
            thumb_url: DataTypes.STRING,
            type1: {
                type: DataTypes.ENUM,
                values: ['public_services', 'local_services']
            }
        }//this one, 
    
    
    
    {//this bracket
                classMethods: {
                    associate: function(models) {
                        // associations can be defined here
                        //   category.hasMany(models.directory, [{foreignKey:'dir_fid'}])
                    }
                }
            });
            return category;
        };
    

    【讨论】:

      【解决方案2】:

      很明显,您混合了模型定义部分和其他选项部分。看看像Sequelize classMethods vs instanceMethods 这样的例子,它们应该在两个对象中,作为两个单独的参数。

      因此,您的代码至少应该修改为:

      var address = connection.define('address', {
          id: {
              type: sequelize.INTEGER,
              primaryKey: true,
              autoIncrement: true
          },
          content: sequelize.TEXT
      },
      // <-- here, another object / argument started
      {
          classMethods: {
              associate: function (model) {
                  var user = model.user;
                  user.hasMany(address);
              }
          }
      });
      

      【讨论】:

      • 是的,我想通了。谢谢你的回答!
      【解决方案3】:
      var address = connection.define('address',{
          id:{
              type :sequelize.INTEGER ,
              primaryKey : true ,
              autoIncrement : true
          },
          content : sequelize.TEXT
          },
          {
              classMethods : {
                  associate : function(model){
                      var user  = model.user; 
                      user.hasMany(address);
                  }
              }
          }
      
      );
      

      ^^语法问题

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 2022-11-19
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        相关资源
        最近更新 更多