如何在其他范围内使用范围?
How to use Scope inside other Scope?
如何描述一个模型的 scope 我可以使用其他模型的 scope?
我有第一个范围:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
}
},
],
}),
我需要在第一个范围内使用下一个范围:
includeStudentAndTutor: () => ({
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
}),
所以最后它就像我只有一个带有嵌套包含的范围一样:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
},
],
})
我找到了解决方案。
这个范围保持不变。
includeStudentAndTutor: () => ({
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
}),
请注意,它是针对 BookingSession
型号
描述的
includeStudentAndTutor
将在其中调用的第二个范围在 Conversations
模型中进行了描述,这里是其工作描述
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
},
sequelize.model('BookingSession').scope('includeStudentAndTutor'),
],
}),
returns 结果与此作用域没有使用 includeStudentAndTutor
作用域相同,只是简单地描述如下:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
},
],
})
如何描述一个模型的 scope 我可以使用其他模型的 scope?
我有第一个范围:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
}
},
],
}),
我需要在第一个范围内使用下一个范围:
includeStudentAndTutor: () => ({
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
}),
所以最后它就像我只有一个带有嵌套包含的范围一样:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
},
],
})
我找到了解决方案。
这个范围保持不变。
includeStudentAndTutor: () => ({
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
}),
请注意,它是针对 BookingSession
型号
includeStudentAndTutor
将在其中调用的第二个范围在 Conversations
模型中进行了描述,这里是其工作描述
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
},
sequelize.model('BookingSession').scope('includeStudentAndTutor'),
],
}),
returns 结果与此作用域没有使用 includeStudentAndTutor
作用域相同,只是简单地描述如下:
includeBookingSessionAndUsers: (userId) => ({
include: [
{
model: sequelize.model('BookingSession'),
where: {
[Op.or]: [
{ studentId: userId },
{ tutorId: userId },
],
},
include: [
{
model: sequelize.model('User'),
as: 'tutor',
},
{
model: sequelize.model('User'),
as: 'student',
}
]
},
],
})