[英]sequelize query between date range (createdAt)
我想在一系列開始日期和結束日期之間查詢續集,但它似乎不起作用。 我試過使用 between,但它似乎也不起作用。 在續集上實現這個的正確方法是什么? 下面的查詢有什么問題? 謝謝你。
#我的代碼
if (query && query.startDate && query.endDate) {
query = {
createdAt: {
[Op.between]: [query.startDate, query.endDate],
},
};
}
#也試過了
if (query && query.startDate && query.endDate) {
query = {
[Op.and]: [
{ createdAt: { [Op.gte]: query.startDate } },
{ createdAt: { [Op.lte]: query.endDate } },
],
};
}
#在控制台查詢
query {
'$skip': '0',
'$limit': '25',
startDate: '2020-07-19',
endDate: '2020-07-20'
}
這是一些演示代碼,例如
// building query string to
buildQuery(query) {
var whereClause = {
};
// pms filter is necessery
if(query && query.pms_id) {
whereClause['pms_id'] = query.pms_id;
}
// checkin date filter
if(query && query.start_date) {
const arrivalFrom = moment(query.start_date).subtract(2, 'months').format('YYYY-MM-DD');
whereClause['checkin_date'] > arrivalFrom;
} else {
const arrivalFrom = moment().subtract(2, 'months').format('YYYY-MM-DD');
whereClause['checkin_date'] > arrivalFrom;
}
// checkout date filter
if(query && query.end_date) {
const arrivalFrom = moment(query.end_date).add(2, 'months').format('YYYY-MM-DD');
whereClause['checkout_date'] < arrivalFrom;
} else {
const arrivalFrom = moment().add(2, 'months').format('YYYY-MM-DD');
whereClause['checkout_date'] < arrivalFrom;
}
return whereClause;
}
// query for getting bookings related to user
getBookings(user_id,query="") {
return bookingModel.findAndCountAll({
where: this.buildQuery(query),
include:[
{ model:pmsModel,
where: { user_id: user_id},
required:false
},
{
model: propertyModel,
required:false
},
{
model: roomModel,
required:false
}
],
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.