gpt4 book ai didi

node.js - 如何在 Bookshelf js 中使用 groupBy?

转载 作者:太空狗 更新时间:2023-10-29 17:26:34 27 4
gpt4 key购买 nike

如何在Bookshelf JS中使用groupBy,这是我的 Controller 代码。

router.route('/fetchStudentAttendance')
.post(function(req, res) {
StudentAttendance
.query(function (qb){
qb.where('date', '>=', req.body.date);
qb.groupBy("students_id");
})
.where({'class_id': req.body.class_id, 'section_id': req.body.section_id})
.fetchAll({ withRelated: [{'StudentRef':function(qb) {qb.column('id', 'first_name', 'middle_name', 'last_name')}}]})
.then(studentAttendance => {
let content = {
data: studentAttendance,
success: true,
message: 'Record Not Found',
};
return res.send(content);
})
.catch(error => {
let content = {
data: error,
success: false,
message: 'Error while fetching Student Attendance.',
};
return res.send(content);
});

});

当我尝试“groupBy”employee_id 时,它会给出这样的错误。

code:"42703"
file:"parse_relation.c"
length:110
line:"3194"
name:"error"
position:"127"
routine:"check_ungrouped_columns_walker"
severity:"ERROR"

最佳答案

长话短说

使用 Bookshelf 的 built-in Collection manipulation.fetchAll() 之后执行自定义 groupBy或者根据需要使用原始 Knex 生成查询和结果,因为 groupBy 将需要一些 SQL 聚合定义。这可以是 Knex 查询结果,也可以是 Bookshelf 对象。

更多单词

Bookshelf 不完全是一个查询生成器;不像查询库 KnexJS它是建立在。 Bookshelf 是作为一种从数据库中收集行作为对象模型的方式。 SQL“groupBy”子句是查询的一种自定义,Bookshelf 本身实现了 lodash 方法,如 lodash 的 groupBy as stated in their docs .然而,这是对查询数据的服务器端分组,它没有使用 SQL 来这样做。

在 Bookshelf 中使用您的 Model 时,您应该在获取之前使用 new ModelModel.forge()(或者在许多,.fetchAll())。您可以通过使用 Model.query ( see docs ) 以某种方式启动 Knex 查询,但请注意它正在返回 Bookshelf 对象。我通常使用 .query(function (qb) {}) 来做一些自定义 knex,比如自定义 WHERE 子句或 qb.orderBy('prop' )。由于 groupBy 将包含“许多”,因此您需要 Model.query().fetchAll(),并注意该查询中的自定义聚合(Bookshelf 可能会处理它,但它不会完全像您定义的模型,尤其是使用自定义方法时)。直接使用 Knex 可能也是一个不错的选择。

关于node.js - 如何在 Bookshelf js 中使用 groupBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48091152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com