javascript - sequelize 日期范围之间的查询(createdAt)

标签 javascript node.js typescript sequelize.js feathersjs

我想在一系列开始和结束日期之间进行 Sequelize 查询,但它似乎不起作用。我试过在两者之间使用,但它似乎也不起作用。在 sequelize 上实现这一点的正确方法是什么?下面的查询有什么问题?谢谢你。
#我的代码

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
                }
                ],           
        });
    }  

关于javascript - sequelize 日期范围之间的查询(createdAt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63007816/

相关文章:

javascript - Ajax 重置部分选择框,但不是全部

node.js - Gitlab管道: Firebase deploy 403

node.js - AWS.DynamoDB.DocumentClient 未提供放置数据

typescript - 如何在 TypeScript 中创建环境类声明

javascript - Jquery post数据显示在url中

javascript - 为什么我在 Javascript 中计算这个方程时会丢失小数点?

javascript - Nodemailer 使用 gmail,无法在字符串 'mailer' 上创建属性 'SMTP'

angular - NGXS @Select 与状态模型的用法

typescript eslint - 类型 x 缺少类型 x 的以下属性

javascript - 订阅 knockoutjs View 模型中中间对象的更改