【问题标题】:Sequelize raw query to return data as arraySequelize原始查询以将数据作为数组返回
【发布时间】:2020-07-04 23:43:36
【问题描述】:

我目前的输出是:

{
    "students": [
        {
            "email": "studenthon@gmail.com"
        },
        {
            "email": "studentjon@gmail.com"
        }
    ]
}

我想要实现的是:


{
  "students" :
    [
      "studenthon@gmail.com", 
      "studentjon@gmail.com"
    ]
}

我如何摆脱“电子邮件”并将它们全部放入一个数组中?

我的 sequelize 原始查询如下:

    const studentsFound = await db.sequelize.query(
      "SELECT email FROM TeacherStudents INNER JOIN Students on TeacherStudents.studentId = Students.id WHERE teacherId IN (:teachersIds) GROUP BY studentId HAVING COUNT(DISTINCT teacherId) = :arrayLength ",
      {
        replacements: {
          teachersIds: ArrayOfIds,
          arrayLength: ArrayOfIds.length
        },
        type: db.sequelize.QueryTypes.SELECT
      }
    );

我目前的解决方案是

    let commonStudentEmail = studentsFound.map(student => {
      return student.email;
    });

但这似乎有点多余,因为我觉得应该有某种配置。

【问题讨论】:

    标签: mysql postgresql sequelize.js


    【解决方案1】:

    Sequelize 必须将一个字段与另一个字段区分开来。这就是查询中的所有字段都被命名的原因,这样您就可以准确地知道在哪些字段中获得了哪些值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多