2016-04-03 11 views
0

私はすべてのユーザーConversationData(1人のユーザーが所有するCovnresationData)を一覧にしたいが、公式サイトのチュートリアルに従うと「未定義」となる。ヘルプ、みんな!ノード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

ORMは、少なくとも「マージ」テーブルを作成してhasManyリレーションシップを処理しますが、あなたのケースでは、 user_conversationsDataを参照してください。この表には、id(生成、無視)の3つの列があり、Users表にマップする場合はuser_id、表の場合はconversationdata_idになるようにします。conversationData表にマップします。

あなたが何をするかORM、上autofetchを持っているがUserを取得し、その後conversationDataテーブルに余分なマージテーブルを結合してconversationdata_id'sconversationData'sをフェッチです。これはあなたが見るクエリです。

conversationDataにアクセスするには、それをプロパティuserInstance.conversationDatasとして表示する必要があります。それでも問題が解決しない場合は、console.dir(Object.keys(userInstance))に電話して何があるかを確認してください。

関連する問題