node.js - 环回 "hasManyThrough"关系。在哪里添加?

标签 node.js loopbackjs

我有一个 User 实体和一个 Hobbie 实体,它们都在 Loopback 中定义了它们的模型,我在 API 资源管理器中看到了它们。

我有一个表 UserHobbie,它以多对多关系链接 User 和 Hobbie。我正在尝试声明环回 hasManyThrough关系如

User.hasMany(Hobbie, {through: UserHobbie});

但我似乎做不好,因为它没有出现在资源管理器中。我已经在引导部分之后的 /server/server.js 中声明了它,并且我已经尝试在 /common/User.js 中进行了声明/common/Hobbie.js(但在其中任何一个中,另一个模型都不可见)。

是否有适当的语法将其添加到 User.json 或 Hobbie.json 中?这将是我的首选方式,因为我在 json 定义中输入的任何内容都会在资源管理器中显示。

最佳答案

为了解决模型 JSON 中的问题,我将在下面概述解决方案。但是,使用“hasAndBelongsToMany”关系会更简单地解决您的问题,我也会在下面概述。

在你的 User.json 中:

  "relations": {
    "Hobbies": {
      "type": "hasMany",
      "model": "Hobbie",
      "through": "UserHobbie",
      "foreignKey": "hobbieId"
    }
  }

在你的 Hobbie.json 中:

  "relations": {
    "Users": {
      "type": "hasMany",
      "model": "User",
      "through": "UserHobbie",
      "foreignKey": "userId"
    }
  }

您的 UserHobbie.json 看起来像这样(请注意您不要在“属性”中定义 userId 或 hobbieId:

{
  "name": "UserHobbie",
  "plural": "UserHobbies",
  "base": "PersistedModel",
  "properties": {
    "id": {
      "type": "String",
      "id": true
    }
  },
  "validations": [],
  "relations": {
    "Users": {
        "type": "belongsTo",
        "model": "User",
        "foreignKey": "userId"
    },
    "Hobbies": {
        "type": "belongsTo",
        "model": "Hobbie",
        "foreignKey": "hobbieId"
    }
  },
  "acls": [],
  "methods": []
}

执行此操作的更简单方法如下:

不要明确创建用户爱好模型。 Loopback 将自动为您创建一个连接模型。

在您的用户模型中:

  "relations": {
    "Hobbies": {
      "type": "hasAndBelongsToMany",
      "model": "Hobbie"
    }
  }

在你的爱好模型中:

  "relations": {
    "Users": {
      "type": "hasAndBelongsToMany",
      "model": "User"
    }
  }

如果您想在代码中执行此操作,那么您是正确的,存在阻止这些关系出现在资源管理器中的引导计时问题。我将很快添加另一个回复,向您展示如何使这项工作也发挥作用。

关于node.js - 环回 "hasManyThrough"关系。在哪里添加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119001/

相关文章:

node.js - 使用环回更改 GET 用户/登录请求中的密码加密

javascript - 如何从 websocket 连接保存来自客户端的传入文本文件

node.js - 发出时间消耗请求时环回超时(服务器无响应)

node.js - 在 Loopback 2.0 中动态设置调试字符串

javascript - LoopBack "group by"能用mySQL吗?

loopbackjs - Loopback 4 中基于模式的 Multi-Tenancy

java - node.js 是否可以导入 java 库

node.js - 在 Laravel 5.4 和 Node.js 上使用 Laravel Mix Error 编译 Assets

javascript - 按浮点值对数组进行排序

javascript - 在对象属性中要求和调用某些东西