【问题标题】:Loopback hasManyThrough relation for user用户的 Loopback hasManyThrough 关系
【发布时间】:2017-06-23 17:12:44
【问题描述】:

我有这样的模型:

团队

{
  "name": "Team",
  "plural": "teams",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "mixins": {
    "ModelRest": {}
  },
  "hidden": [
    "deleted"
  ],
  "filtered": [
    "userId",
    "archived"
  ],
  "properties": {
    "name": {
      "type": "string",
      "required": true
    },
    "createdAt": {
      "type": "date"
    },
    "deleted": {
      "type": "boolean"
    }
  },
  "validations": [],
  "relations": {
    "projects": {
      "type": "hasMany",
      "model": "Project"
    },
    "user": {
      "type": "belongsTo",
      "model": "user"
    },
    "users": {
      "type": "hasMany",
      "model": "User",
      "foreignKey": "",
      "through": "TeamMember"
    }
  },
  "acls": [],
  "methods": {}
}

团队成员

{
  "name": "TeamMember",
  "plural": "team-members",
  "base": "Model",
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {},
  "validations": [],
  "relations": {
    "user": {
      "type": "belongsTo",
      "model": "user"
    },
    "team": {
      "type": "belongsTo",
      "model": "Team"
    }
  },
  "acls": [],
  "methods": {}
}

用户

{
  "name": "user",
  "plural": "users",
  "base": "User",
  "idInjection": true,
  "mixins": {
    "ModelRest": {}
  },
  "hidden": [
    "realm",
    "emailVerified",
    "lastIP",
    "deleted",
    "utmSource",
    "utmMedium",
    "utmCampaign"
  ],
  "readOnly": [
    "statusId",
    "lastListId",
    "teamId",
    "subscriptionStart",
    "subscriptionExpiration",
    "apiKey"
  ],
  "properties": {
    "name": {
      "type": "string",
      "required": true,
      "mysql": {
        "columnName": "username"
      }
    },
    "password": {
      "type": "string",
      "required": true,
      "min": 5
    },
    "email": {
      "type": "string",
      "required": true
    },
    "createdAt": {
      "type": "date"
    },
    "updatedAt": {
      "type": "date"
    },
    "subscriptionStart": {
      "type": "date"
    },
    "subscriptionExpiration": {
      "type": "date"
    },
    "teamId": {
      "type": "number"
    },
    "sharePlan": {
      "type": "boolean"
    },
    "shareLeads": {
      "type": "boolean"
    },
    "timezone": {
      "type": "string"
    },
    "utmSource": {
      "type": "string"
    },
    "utmMedium": {
      "type": "string"
    },
    "utmCampaign": {
      "type": "string"
    },
    "lastIP": {
      "type": "string"
    },
    "deleted": {
      "type": "boolean"
    }
  },
  "validations": [],
  "relations": {
    "team": {
      "type": "belongsTo",
      "model": "Team"
    },
    "plan": {
      "type": "belongsTo",
      "model": "Plan"
    },
    "billingCycle": {
      "type": "belongsTo",
      "model": "BillingCycle"
    },
    "card": {
      "type": "belongsTo",
      "model": "Card"
    },
    "lastList": {
      "type": "belongsTo",
      "model": "List"
    },
    "status": {
      "type": "belongsTo",
      "model": "Status"
    },
    "accessTokens": {
      "type": "hasMany",
      "model": "AccessToken"
    }
  },
  "acls": [],
  "methods": {}
}

我在团队模型中创建了关系:

"users": {
  "type": "hasMany",
  "model": "User",
  "foreignKey": "",
  "through": "TeamMember"
}

users 关系在 Team 中根本不起作用。在 API 资源管理器中,我看到了

GET /teams/{id}/user

没有

GET /teams/{id}/users

为什么会这样? 我什至用 Loopback 关系生成器创建了这种关系。结果相同。无法弄清楚错误在哪里。 Loopback 没有看到这种关系。 感谢您的帮助。

【问题讨论】:

  • 我可以看到modelUser,但我认为您应该改用user。可能User 模型不公开,您已将其扩展为user
  • 哦,是的,我明白了。但我在“用户”之前尝试过,结果是一样的:(

标签: loopbackjs strongloop


【解决方案1】:

就是这样,因为在 model-config.json 我有

  "TeamMember": {
    "dataSource": null,
    "public": true
  },

代替:

  "TeamMember": {
    "dataSource": "db",
    "public": true
  },

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2018-07-24
    • 2018-10-18
    • 2023-03-09
    • 2021-06-09
    • 2017-11-12
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多