通过Sequelize

时间:2018-03-22 08:17:09

标签: node.js sequelize.js

我想搜索开始日期到结束日期的房间。
例如,我想要从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')
                                    }                                           
                        }                           
                    }
        ]
    });   

所以无法真正理解为什么会出现无效值错误?不是在期待别的吗?

1 个答案:

答案 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')
                }                                       
            }
        ]

您发布的上一个查询很好,就是您应该去的方式。