首页 文章

环回:关系通过 - 不工作

提问于
浏览
0

所以,我陷入了一个问题,这应该是简单的,我相信我错过了一些明显的东西

我正在关注此文档:

所以我有3张 table

客户,团队,客户团队

client.json

{
  "name": "client",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "teams": {
      "type": "hasMany",
      "model": "team",
      "foreignKey": "teamId",
      "through": "client-team"
    }
  },
  "acls": [],
  "methods": {}
}

team.json

{
  "name": "team",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "type": {
      "type": "string",
      "required": true,
      "default": "first-team"
    },
    "name": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "clients": {
      "type": "hasMany",
      "model": "client",
      "foreignKey": "clientId",
      "through": "client-team"
    }
  },
  "acls": [],
  "methods": {}
}

客户team.json

{
  "name": "client-team",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "clientId": {
      "type": "string",
      "required": true
    },
    "teamId": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "client": {
      "type": "belongsTo",
      "model": "Client",
      "foreignKey": "clientId"
    },
    "team": {
      "type": "belongsTo",
      "model": "Team",
      "foreignKey": "teamId"
    }
  },
  "acls": [],
  "methods": {}
}

所以所有关系设置正确(我认为)......

然后在我的客户我有1个客户

[
  {
    "name": "Client name",
    "id": "59876185508eb519385779c6"
  }
]

在我的团队中,我有很多,但可以肯定的是:

[
  {
    "type": "type",
    "name": "Team name",
    "id": "5ae8a37add2989a32d37f83d"
  }
]

然后我去找我的

localhost:3000 /资源管理器

POST一个客户团队

像这样

{
    "clientId": "59876185508eb519385779c6",
    "teamId": "5ae8a37add2989a32d37f83d"
}

我得到200响应:

{
  "clientId": "59876185508eb519385779c6",
  "teamId": "5ae8a37add2989a32d37f83d",
  "id": "5ae961873a7e3b33f0579fc3"
}

所以连接就在那里....

但是,当我去“获取客户端/身份证”并做到时

id:59876185508eb519385779c6 filter:{“include”:[“teams”]}

这是回应

{
  "name": "Chelsea FC",
  "id": "59876185508eb519385779c6",
  "teams": []
}

同样的情况发生在“GET团队/ id”中,我使用

id:5ae8a37add2989a32d37f83d filter:{“include”:[“clients”]}

或者如果我去“获取团队/ / clients”并输入id:5ae8a37add2989a32d37f83d

我明白了

[]

那么我做错了什么?我确信我错过了一个愚蠢明显的事情:/

使用mongo,如果这有任何区别

1 回答

  • 1

    这里有三个问题:

    • 您将mongodb标识符描述为字符串,不需要's why you store strings in database instead of object ids. (it',因为数据源应该理解实际类型)

    • 您的模型从小写字母开始 . 关系也应该如此 . (问题的第一部分,它正在解决ids的问题)

    • 客户端和团队模型的关系不正确(问题的第二部分,它正在修复包括)

    客户team.json

    {
      "name": "client-team",
      "base": "PersistedModel",
      "idInjection": true,
      "options": {
        "validateUpsert": true
      },
      "properties": {
        "clientId": {
          "type": "objectId", // !!! changed (not required)
          "required": true
        },
        "teamId": {
          "type": "objectId", // !!! changed (not required)
          "required": true
        }
      },
      "validations": [],
      "relations": {
        "client": {
          "type": "belongsTo",
          "model": "client",  // !!! changed
          "foreignKey": "clientId"
        },
        "team": {
          "type": "belongsTo",
          "model": "team",  // !!! changed
          "foreignKey": "teamId"
        }
      },
      "acls": [],
      "methods": {}
    }
    

    client.json

    {
      "name": "client",
      "base": "PersistedModel",
      "idInjection": true,
      "options": {
        "validateUpsert": true
      },
      "properties": {
        "name": {
          "type": "string",
          "required": true
        }
      },
      "validations": [],
      "relations": {
        "teams": {
          "type": "hasMany",
          "model": "team",
          "foreignKey": "clientId", // !!! changed (we describing id of this model, not team)
          "through": "client-team"
        }
      },
      "acls": [],
      "methods": {}
    }
    

    team.json

    {
      "name": "team",
      "base": "PersistedModel",
      "idInjection": true,
      "options": {
        "validateUpsert": true
      },
      "properties": {
        "type": {
          "type": "string",
          "required": true,
          "default": "first-team"
        },
        "name": {
          "type": "string",
          "required": true
        }
      },
      "validations": [],
      "relations": {
        "clients": {
          "type": "hasMany",
          "model": "client",
          "foreignKey": "teamId", // !!! changed (the same as the previous)
          "through": "client-team"
        }
      },
      "acls": [],
      "methods": {}
    }
    

相关问题