2015-02-11 76 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