我想列出所有用户ConversationData(ONE User HAS MANY CovnresationData),但是我得到了#undefined'当我在官方网站上关注教程。帮帮忙,伙计们!
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);
});
输出:
(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 :(得分:0)
至少就我在MySQL中看到的那样,ORM通过创建“合并”表来处理hasMany
关系,在您的情况下,它可能是您所看到的user_conversationsData
。此表应包含3列id
(生成,忽略它),user_id
映射到Users
表,conversationdata_id
映射到conversationData
表
您已启用autofetch
,ORM将执行的操作是获取User
,然后通过将额外的合并表加入到conversationdata_id's
和conversationData's
来获取conversationData
表。这是您看到的查询。
要访问conversationData,您应该可以将其视为属性userInstance.conversationDatas
。如果这不起作用,请尝试拨打console.dir(Object.keys(userInstance))
以查看其中的内容。