gpt4 book ai didi

sequelize.js - Sequelize 请求未正确排序记录

转载 作者:行者123 更新时间:2023-12-03 22:24:17 26 4
gpt4 key购买 nike

我正在使用以下 Sequelize 请求通过预订 ID 获得车辆预订。包括链接的车辆及其照片。

Bookings.findAll({
where: {
id: bookingid,
},
include: [
{
model: db.vehicles,
include: {
model: db.photos,
order: [["photoOrder", "ASC"]],
},
},
],
})
它的工作原理是我得到了正确的数据,但照片不是按照 photoOrder 升序排列的。
[
{
"id": 1,
"bookingCost": 123,
"userId": 1,
"vehicleId": 1,
"vehicle": {
"id": 1,
"model": "fiesta",
"photos": [
{
"id": 2,
"photoOrder": 2,
"photoUrl": "https://xxx.jpg",
"vehicleId": 1
},
{
"id": 1,
"photoOrder": 1,
"photoUrl": "https://yyy.jpg",
"vehicleId": 1
}
]
}
}
]
我究竟做错了什么?我的协会是:
db.vehicles.hasMany(db.bookings);
db.bookings.belongsTo(db.vehicles);

db.vehicles.hasMany(db.photos);
db.photos.belongsTo(db.vehicles);

最佳答案

order 选项用于顶级。
你可以做

Bookings.findAll({
where: ...,
include: ...,
order: [[db.vehicles, db.photos, "photoOrder", "ASC"]]
})
================================
更新: order 选项可以应用于 include 。但是,要生效,您需要添加 separate: true
Bookings.findAll({
where: ...,
include: {
model: db.vehicles,
include: {
model: db.photos,
separate: true,
order: [["photoOrder", "ASC"]]
}
}
})
separate: true 将执行 2 个查询。
order 放入顶级的原始答案将执行 1 个查询。
如果数据很小,我认为任一个选项都可以,所以这只是一个偏好。

关于sequelize.js - Sequelize 请求未正确排序记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67842896/

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