gpt4 book ai didi

sequelize.js - Sequelize - 多条件查询

转载 作者:行者123 更新时间:2023-12-03 22:22:36 31 4
gpt4 key购买 nike

我正在使用 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)
});

但这与我目前的情况并没有什么不同。

最佳答案

您可以将 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 } }
)
})

关于sequelize.js - Sequelize - 多条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42731326/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com