【问题标题】:Node ORM hasMany association节点 ORM 有很多关联
【发布时间】:2016-04-03 17:43:05
【问题描述】:

我想列出所有用户 ConversationData(一个用户有很多 CovnresationData),但是当我按照官方网站上的教程进行操作时,我得到了“未定义”。帮助,伙计们!

 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

在我看来,请求完全错误。据我了解,它必须加入用户和对话数据表..

【问题讨论】:

    标签: node.js orm associations node-orm2


    【解决方案1】:

    至少就我所见的 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)) 看看那里有什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多