mysql - Sequelize 原始查询以将数据作为数组返回

标签 mysql postgresql sequelize.js

我目前的输出是:

{
    "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;
    });


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

最佳答案

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

关于mysql - Sequelize 原始查询以将数据作为数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60831727/

相关文章:

mysql - 将所有 MySQL 数据库导出到一个文件

mysql - DJANGO 中的模型有 4 个字段,其中两个字段给出错误 :"add a non-nullable field...."。我的问题是为什么其他两个字段没有给出错误

PostgresQL:查找 ARRAY_AGG() 输出的数组长度

javascript - 为什么 save() 在 Sequelize 中不起作用?

javascript - 将 MySQL 结果写入路由文件

php - 错误 : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'contenido' cannot be null

sequelize.js - 在 sequelize 上执行 sql 查询

sequelize.js - Sequelize 代码不在 AWS Lambda 内部执行

java - 无法持久保存分离的对象

javascript - 使用 PostgreSQL 构建具有逻辑的 promise 链