简体   繁体   English

续集日期范围之间的查询(createdAt)

[英]sequelize query between date range (createdAt)

I wanted to query in sequelize between a range of start and end-date but it does not seem to work.我想在一系列开始日期和结束日期之间查询续集,但它似乎不起作用。 I've tried using between but it does not seem to work either.我试过使用 between,但它似乎也不起作用。 What is the correct way of implementing this on sequelize?在续集上实现这个的正确方法是什么? what is wrong with the query below?下面的查询有什么问题? Thank you.谢谢你。

#My code #我的代码

if (query && query.startDate && query.endDate) {
  query = {
    createdAt: {
      [Op.between]: [query.startDate, query.endDate],
    },
  };
}

#also have tried #也试过了

if (query && query.startDate && query.endDate) {
      query = {
        [Op.and]: [
          { createdAt: { [Op.gte]: query.startDate } },
          { createdAt: { [Op.lte]: query.endDate } },
        ],
      };
    }

#query at the console #在控制台查询

query {
  '$skip': '0',
  '$limit': '25',
  startDate: '2020-07-19',
  endDate: '2020-07-20'
}

Here is some demo code for example这是一些演示代码,例如

// 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM