提问人:meastro 提问时间:11/18/2023 更新时间:11/19/2023 访问量:13
使用计算列 Sequelize findAll
Sequelize findAll with calculated column
问:
我正在尝试找出某个几何图形是否在边界 POLYGON 中。我找到了这个答案(使用 Sequelize 和 postgis 在多边形中查找一个点),但它只描述了如何进行单个 where 检查。
我需要创建一个复杂的where子句。如何使用 ST_Within 使用复杂的 where 子句?
从链接的问题中回答
Device.findAll({
where: sequelize.where(
sequelize.fn('ST_Within', sequelize.col('coord'), sequelize.fn('ST_GeomFromText', 'POLYGON((lng2 lat2, lng3 lat3, lng4 lat4, ...))')),
true
)
});
我尝试将此值添加到findAll属性中:
Device.findAll({
attributes: [
[
sequelize.fn('ST_Within', sequelize.col('coord'), sequelize.fn('ST_GeomFromText', 'POLYGON((lng2 lat2, lng3 lat3, lng4 lat4, ...))')),
true
),
'contains'
]
]
where: {
name: "cellphone",
contains: true
}
});
但是我收到一个关于设备表中不存在的包含的错误。我知道它不存在,我在属性中计算了它。
答:
0赞
Anatoly
11/19/2023
#1
您可以简单地使用 / 将此几何条件与其他条件组合在一起(取决于您需要获得的内容):Op.and
Op.or
Device.findAll({
where: {
[Op.and]: [
sequelize.where(
sequelize.fn('ST_Within', sequelize.col('coord'), sequelize.fn('ST_GeomFromText', 'POLYGON((lng2 lat2, lng3 lat3, lng4 lat4, ...))')),
true
),
{
name: "cellphone"
}
]
}
});
评论