2016-04-03 45 views
0

我想列出所有的用戶ConversationData(ONE用戶有很多CovnresationData),但當我在官方網站上跟隨教程時,我得到'undefined'。幫助,夥計們!節點ORM hasMany協會

var User = db.define("user", { 
     name  : String, 
     surname : String, 
     avatar : String, 
     username : String, 
     token  : String 
    }, { 
     autoSave: true 
    }); 

var Conversation = db.define("conversations", { 
    name  : Number, 
    createdAt : Date, 
    updatedAt : Date 
}); 
var ConversationData = db.define("conversation_data", { 
    user_id   : Number, 
    conversation_id : Number 
}); 


db.sync(); 



User.hasMany('conversationsData', ConversationData, {}, { 
    autoFetch: true 
}); 
User.find({id: 1}).first(function(err, asda) { 
    cconsole.log(asda.conversationsData); 

}); 

OUTPUT:

(orm/postgres) SELECT "t1"."user_id", "t1"."conversation_id", "t1"."id" FROM "conversation_data" "t1" JOIN "user_conversationsData" "t2" ON "t2"."conversationsdata_id" = "t1"."id" WHERE "t2"."user_id" = 1 
undefined 

請求在我看來完全錯誤的。它必須加入用戶和對話數據表,據我所知。

回答

0

至少據我看到的MySQL,ORM處理hasMany關係通過創建一個「合併」表,在你的情況下,它可能是你請參閱user_conversationsData。此表應該有3列,id(生成,忽略它),user_id映射到Users表和conversationdata_id映射到conversationData表。

你有autofetch上,什麼ORM會做的是獲取User,然後通過加入額外的合併表的conversationData表中提取conversationdata_id'sconversationData's。這是你看到的查詢。

要訪問對話數據,您應該能夠將其視爲屬性userInstance.conversationDatas。如果這不起作用,請嘗試撥打console.dir(Object.keys(userInstance))以查看有哪些內容。