2015-02-11 78 views
0

我想创建一个模型,如下所示:类别内的表SequelizeJS关系,同型号

var category = db.define('category', { 
 
    name: { 
 
     type: Types.STRING, 
 
    }, 
 
    position: { 
 
     type: Types.INTEGER 
 
    } 
 
    }, { 
 
    classMethods:{ 
 
     associate: function (models) { 
 
     category.belongsTo(models.category); 
 
     category.hasMany(models.category); 
 
     } 
 
    } 
 
    });

它工作在我的数据库,我有“的CategoryId”,但我的时候希望包括我的查询类型模型它不工作,我得到一个问题:

Error: ER_NONUNIQ_TABLE: Not unique table/alias: 'category' 

而且我的查询:

this.context.category.findAll({include: [{model: this.context.category}]}); 
+0

嗯,你和同桌使得关系(属于关联/的hasMany)的顺序?我对你在这里试图做的事情感到困惑。如果您只想查找表类别的所有元素,则只需执行findAll即可。 – dege 2015-02-11 10:26:20

+0

每个类别都可以有一个父类或子类... – tonymx227 2015-02-11 14:03:27

回答

1

你只需要因瓦合金

var category = sequelize.define('category', { 
    name: { 
     type: Sequelize.STRING, 
    }, 
    position: { 
     type: Sequelize.INTEGER 
    } 
    }, { 
    classMethods:{ 
     associate: function (c) { 
     category.hasMany(c); 
     category.belongsTo(c); 
     } 
    } 
    }); 
+0

好吧,这是在这种情况下使用“hasMany”的最佳方式?或者“hasOne”可能会更好? – tonymx227 2015-02-12 10:33:02

+0

这取决于你想要什么。如果您只希望某个类别具有一个子类别(子级),则只需使用hasOne即可,如果您希望使用多个类别(hasMany)。 – dege 2015-02-12 10:47:10

+0

如果你问sequelize是否与hasOne只有一个孩子关系最优化,可能但我不确定,但是与hasOne的关系,你可以做getCategory来得到孩子,用hasMany你将得到可以得到的Categorys你与所有的孩子阵列。希望这会有所帮助:) – dege 2015-02-12 10:54:32