mysql - Sequelize原始查询以将数据作为数组返回
问题描述
我目前的输出是:
{
"students": [
{
"email": "studenthon@gmail.com"
},
{
"email": "studentjon@gmail.com"
}
]
}
我想要实现的是:
{
"students" :
[
"studenthon@gmail.com",
"studentjon@gmail.com"
]
}
我如何摆脱“电子邮件”并将它们全部放入一个数组中?
我的续集原始查询如下:
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 必须将一个字段与另一个字段区分开来。这就是为什么查询中的所有字段都被命名的原因,这样您就可以确切地知道您在哪些字段中获得了哪些值。
推荐阅读
- c# - 具有多个 HttpPost 方法的 Web Api 中的 CORS 问题
- php - PHP 脚本 - 如何在我的脚本中使用 php artisan 命令?
- sql - Redshift:范围连接的 DIST KEY 和 SORT KEY 策略
- angular - Angular Material进度微调器在线
- reactjs - 如何在 React Semantic UI 中使用 List 组件“items”道具?
- c - 我们如何在#define 语句中使用联合和结构
- r - 如何有效地为 stan 数据块指定一个大的预测矩阵
- python - 如何向 HyperlinkedModelSerializer 添加额外数据?
- ios - iOS:UIAlertController 上的 textField 成为当前警报时的第一响应者
- php - wp_query 搜索结果不是预期的