解决Sequelize查询遇到的问题

本文解决Sequelize查询中遇到的复杂问题,特别是在处理主表及其关联表(如订单表和请假表)时,如何正确使用where条件过滤数据,确保查询结果准确反映未请假且无订单的导游信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这篇文章可能只适合我这个脑残来记录了,这两天我遇到了一个问题,将传入时间和表中的时间进行比较,但是这个where 就是主表下面的关联表中,但有个问题就是主表下的关联表数据不是全部都有的,存在无数据的情况,所以这个导致我where条件不生效。以上属于废话,我都有点语无伦次了。
我要实现的就是查询在传入的时间没有请假的导游并且没有订单的导游

查主表全部数据及include(订单表及请假表)

      let include = [
        {
          model: this._Indent,
          as: 'indent',
          required: false
        },
        {
          model: this._TourGuideLeave,
          as: 'tour_guide_leaves',
          required: false
        }
      ]
      const AllTourGuide = await this._TourGuide.findAll({
        include,
        where
      })

定义一个数组,然后遍历不满足条件的,然后返回满足的条件

let arr1 = []
      for (let result of AllTourGuide) {
        let state = true // 给全部导游定义一个标签值为true
        for (let indents of result.indent) { // 遍历导游的订单
          if (indents.startTime <= Time && indents.endTime >= Time) { // 满足条件则标签值为false
            state = false
          }
        }
        if (state) {
          for (let leaves of result.tour_guide_leaves) { // 遍历导游请假
            if (leaves.startAt <= Time && leaves.endAt >= Time) { // 满足条件则标签值为false
              state = false
            }
          }
        }
        if (state) { // 则剩余的就是可被预约的导游
          arr1.push(result)
        }
      }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值