2014-03-05 58 views
0

我是node.js的新手。我在我的應用程序中使用了sequelize。 我有以下型號:如何使用'has-many belongs-to relationaship'訪問node.js中的記錄?

var Topic = sequelize.define('Topic', { 
    topic_name: Sequelize.STRING, 
    topic_category: Sequelize.STRING 
},{tableName: 'Topics'}) 

var RawStatistic = sequelize.define('RawStatistic', { 
    feedback_value: Sequelize.STRING, 
    count: Sequelize.INTEGER, 
    total_feedbacks_for_this_topic: Sequelize.INTEGER 
},{tableName: 'RawStatistics'}) 

以及它們之間的rellation如下:

RawStatistic.belongsTo(Topic); 
Topic.hasMany(RawStatistic); 

但是當我使用:

RawStatistic.all({limit: FIVE}).success(function (raw_statistics) { 
    raw_statistics.getTopic().success(function (r){ 
    res.json(r) 
    }); 
    }); 

我得到的錯誤:

TypeError: Object [object Object] has no method 'getTopic' 

我的問題是如果我有反饋記錄,如何訪問特定主題名稱? 相同的語法是什麼?可能我忽略了一個明顯的語法來實現這一點。任何幫助將非常感激。在此先感謝:)

+1

你是怎麼定義你的'Topics'的?單數?或複數?請注意,sequelize中的_all_模型應以單數形式定義。另外,一個'RawStatstics'屬於_one_主題,因此你不能使用'getTopics()',而是'getTopic()'(只有一個)。 – Zeta

+0

@Zeta你是對的,我已經定義了'Topics'而不是'Topic'。謝謝。我做了更正並更新了這個問題,但是我仍然得到相同的錯誤。不知道我錯過了什麼 – Rads

回答

2

您試圖在實例集合上使用實例方法。你需要遍歷結果:

RawStatistic.all({limit: FIVE}).success(function (raw_statistics) { 
    var i; 
    for(i = 0; i < raw_statistics.length; ++i){ 
    raw_statistics[i].getTopic().success(function (t){ 
     /* ... */ 
    }); 
    } 
}); 
+0

Omg我忽略了一些非常基本的東西。非常感謝你的幫助 :) – Rads

相關問題