【问题标题】:Sequelize - multi-condition queriesSequelize - 多条件查询
【发布时间】:2017-03-11 18:05:44
【问题描述】:

我正在使用 Sequelize 查询 PostGIS 数据库并根据地理邻近度返回用户记录。我想从搜索结果中排除当前用户,但我不知道为这种特定类型的搜索添加多个条件的正确语法。

就目前而言,查询是

models.Geometry.findAll({
        where: models.sequelize.where(
            models.sequelize.fn(
                'ST_Distance_Sphere',
                models.sequelize.col('the_geom'),
                models.sequelize.fn(
                    'ST_GEOMFROMTEXT',
                    'POINT(' + row.dataValues.longitude + ' ' + row.dataValues.latitude + ')', 4326
                )
            ),
            '<=',
            radius
        )
    })

我想补充

where: {
     UserId: {
         $not: currentUser.id
     }
}

我在 Sequelize 文档中找不到任何示例...我得到的最接近的是

Post.findAll({
     where: sequelize.where(sequelize.fn('char_length', sequelize.col('status')), 6)
});

但这和我现在的情况并没有什么不同。

【问题讨论】:

    标签: sequelize.js


    【解决方案1】:

    您可以将models.sequelize.where 函数值分配给where 对象中的某个属性 - 此属性不会用作查找字段

    models.Geometry.findAll({
        where: {
            stDistanceSphere: models.sequelize.where(
                models.sequelize.fn(
                    'ST_Distance_Sphere',
                    models.sequelize.col('the_geom'),
                    models.sequelize.fn(
                        'ST_GEOMFROMTEXT',
                        'POINT(' + row.dataValues.longitude + ' ' + row.dataValues.latitude + ')', 4326
                    )
                ),
                '<=',
                radius
            ),
            UserId: { $not: currentUser.id }
        }
    })
    

    也可以使用sequelize.and()函数构造AND查询

    models.Geometry.findAll({
        where: models.sequelize.and(
            models.sequelize.where(
                models.sequelize.fn(
                    'ST_Distance_Sphere',
                    models.sequelize.col('the_geom'),
                    models.sequelize.fn(
                        'ST_GEOMFROMTEXT',
                        'POINT(' + row.dataValues.longitude + ' ' + row.dataValues.latitude + ')', 4326
                    )
                ),
                '<=',
                radius
            ),
            { UserId: { $not: currentUser.id } }
        )
    })
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2015-07-05
      • 2019-11-18
      • 2017-03-19
      • 2019-06-11
      • 1970-01-01
      • 2022-09-23
      • 2021-09-23
      相关资源
      最近更新 更多