我想搜索从开始日期到到结束日期的房间。
例如,我想要从3月28日到3月31日的可用房间
我将搜索在提供的日期之间保留的房间并将返回
除了这些房间以外的所有房间
我使用sequelize作为ORM
我有以下查询,但执行它给我以下错误。
let availableRooms = await Room.findById(id, {
include: [
{
model: Reserved,
where: {
notIn: [
{
from: {
lt: Date.parse('2018-03-31')
}
},
{
to:{
gt: Date.parse('2018-03-28')
}
}
]
}
}
]
});
错误:无效值{from:{gt:1522195200000}}
保留是另一个以roomID作为外键的表。它还包含两列
1)来自
2)至
两列都有DATE类型。
仅供参考,以下查询正常。
let availableRooms = await Room.findById(id, {
include: [
{
model: Reserved,
where: {
from: {
gt: Date.parse('2018-03-28')
},
to:{
lt: Date.parse('2018-03-31')
}
}
}
]
});
所以无法真正理解为什么会出现无效值错误?不是在期待别的吗?
答案 0 :(得分:0)
您收到此错误
错误:无效值{from:{gt:1522195200000}}
notIn
所需的值为array of values
而不是array of queries
,因此上述值对notIn
无效
在这里,您将query
而非values
提供给notIn
<强> E.G。 :强>
notIn: [ 1,2,3 ] // this will work
// Not this
notIn: [
{
from: {
lt: Date.parse('2018-03-31')
}
},
{
to:{
gt: Date.parse('2018-03-28')
}
}
]
您发布的上一个查询很好,就是您应该去的方式。