【问题标题】:SequelizeJS primaryKey related includeSequelize JS 主键相关包括
【发布时间】:2017-10-12 17:38:55
【问题描述】:

我目前正在使用 SequelizeJS 和 Express 开发 REST API。

我习惯了 Django Rest Framework,我正在尝试寻找类似的功能: 我有一个表用户和一个表电话号码。 我希望能够以 JSON 格式返回用户,包括其电话号码的主键列表,如下所示:

{
  "firstName": "John",
  "lastName": "Doe",
  "phoneNumbers": [23, 34, 54],
}

有没有办法在 sequelize 中简单有效地做到这一点,或者我是否必须编写转换字段的函数,例如:

"phoneNumbers": [
    { "id": 23, "number": "XXXXXXXXXX" },
    { "id": 34, "number": "XXXXXXXXXX" },
    { "id": 54, "number": "XXXXXXXXXX" }
      ]

进入我上面的内容?

谢谢, 吉尔索

【问题讨论】:

    标签: node.js rest express django-rest-framework sequelize.js


    【解决方案1】:

    Sequelize finder-methods 接受和选项attribute,可让您定义应查询的模型的哪些属性。见http://docs.sequelizejs.com/manual/tutorial/querying.html#attributes

    这也适用于连接:

    User.all({
      include: [
        { model: Phonenumber, attributes: ['id']}
      ]
    })
    .then(function(users) {
    })
    

    将执行

    SELECT user.*, phonenumber.id FROM user INNER JOIN phonenumber ON ...
    

    但是要在您的 api 响应中将电话号码转换为整数数组 [1,2,...],您仍然必须手动将 id 映射到数组中,否则您会得到一个 [{"id": 1}, {"id": 2},...] 数组。

    但实际上我不建议这样做。对象数组是比整数数组更具前瞻性的选择。因为如果您决定某一天使用附加属性扩展 phonenumber 对象,您的 api-client 不需要更改任何内容。

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多