gpt4 book ai didi

javascript - 使用 Sequelize.js findAll 对连接表中的字段进行排序的正式且正确的语法

转载 作者:行者123 更新时间:2023-12-03 22:42:50 27 4
gpt4 key购买 nike

我有两个表 - CustomerOrders 它们是一对多的关系。我正在使用 findAll() 查询两个表并尝试通过降序对 Orders.orderDate 进行排序。以下全错,结果查询错误。

错误的语法 (1)

Customer.findAll({
order: [["orderDate", "DESC"]],
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Customer"."orderDate" DESC;

错误的语法 (2)

Customer.findAll({
order: [["Orders.orderDate", "DESC"]],
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Customer"."Orders"."orderDate" DESC;

错误的语法 (3)

Customer.findAll({
order: ["Orders.orderDate", "DESC"],
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Orders"."orderDate", "DESC";

错误的语法 (4)

Customer.findAll({
order: ["Orders.orderDate DESC"],
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Orders"."orderDate DESC";

以下是我让它工作的:

Customer.findAll({
order: '"Orders"."orderDate" DESC',
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Orders"."orderDate" DESC;

但是,我怀疑它不可能是正式且正确的,因为我必须手动添加双引号。在上面的错误语法示例中,表名和字段名周围的引号会自动添加。

我在 PostgreSQL 中使用 Sequelize 2.0.0-rc3。

最佳答案

我刚刚找到了正确的用法。模型对象必须在 order 选项的数组中给出。

Customer.findAll({
order: [[ Order, "orderdate", "DESC" ]],
include: [Order]
}, {
raw: true
}).then(function(data) {
console.log(data);
});
// Generated order by clause
// ORDER BY "Orders"."orderDate" DESC;

关于javascript - 使用 Sequelize.js findAll 对连接表中的字段进行排序的正式且正确的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600450/

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