2016-04-03 8 views
0

Ich möchte alle Benutzer ConversationData (ein Benutzer hat viele CovnresationData), aber ich habe "undefiniert", wenn ich Tutorial auf der offiziellen Website folgte. Hilfe, Leute!Node ORM hasMany Zuordnung

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 

Anfrage an mich scheint völlig falsch. es muss Benutzer und Konversation Datentabellen beitreten, wie ich verstehe.

Antwort

0

Zumindest so weit wie ich mit MySQL gesehen habe, behandelt ORM hasMany Beziehungen durch Erstellen einer 'merge' Tabelle, in Ihrem Fall ist es wahrscheinlich, was Sie siehe user_conversationsData. Diese Tabelle sollte drei Spalten haben: id (generiert, ignoriert), user_id, um die Tabelle Users zu bilden, und conversationdata_id, um die Tabelle conversationData zu bilden.

Sie haben autofetch auf, welche ORM tun werden, ist die User holen, und dann holen die conversationdata_id's und die conversationData's durch die zusätzliche Merge-Tabelle in die conversationData Tabelle verbinden. Dies ist die Abfrage, die Sie sehen.

Um auf die conversationData zuzugreifen, sollten Sie in der Lage sein, sie als Eigenschaft userInstance.conversationDatas zu sehen. Wenn das nicht funktioniert, versuchen Sie console.dir(Object.keys(userInstance)) anzurufen, um zu sehen, was da ist.