首页 > 解决方案 > Sequelize - 返回标准化数据

问题描述

Sequelize 似乎使返回的数据非规范化。在这里, auser嵌入在 a 中task

[{
  "name": "A Task",
  "id": 1,
  "userId": 1,
  "user": {
    "name": "John Doe",
    "id": 1
  }
}]

但是,我发现规范化数据更容易处理(尤其是在深度嵌套对象的情况下),并且我想尽可能避免使用 normalizr。

是否有可能要求 sequelize 返回标准化数据?


所需数据的示例:

{
  "tasks": {
    "1":{
      "id": 1,
      "name": "A Task",
      "user": 123
    }
  },
  "users": {
    "123":{
      "name": "John Doe",
      "id": 123
    }
  }
}

标签: sequelize.js

解决方案


Sequelize 不能做这样的标准化。您应该请求所有任务,然后让用户在单独的查询中从检索到的任务中获取他们的 ID。在 SQL 中,如果您加入任务和用户表,如果某些任务具有相同的用户,您还将获得重复用户。

task_id,user_id,user_name
1,1,'John Dow'
2,1,'John Dow'
3,2,'John Smith'

推荐阅读