请救救我! 我有一个项目使用Sequelize,Postgres和Postgis(用于GPS). 模式(简化)为:
export default class Activity extends Model {
static init(sequelize) {
return super.init({
sequelize,
tableName: 'activities',
})
}
static get modelAttributes() {
return {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
activity_name: {
type: 'citext',
allowNull: false,
unique: {
args: true,
msg: 'Activity name already in use.',
},
point: {
type: DataTypes.GEOMETRY,
allowNull: true,
},
}
}
}
我没有放置迁移文件,因为这部分工作得很好:当我保存数据时,它被正确注册.
await Activity.bulkCreate({
activity_name: 'whatever,
point: { type: 'Point', coordinates: [lat, lng] },
})
当我试图在一定距离内进行活动时,问题就出现了:
const result = await User.findAll({
include: [
{
model: Activity,
required: true,
where: {
point: Sequelize.fn(
'ST_DWithin',
Sequelize.fn(
'ST_SetSRID',
Sequelize.fn('ST_MakePoint', 40.119536, 8.495837),
4326
),
parseFloat(distance) // number 10000
),
},
},
],
})
下面的代码抛出一个错误:"函数st_din(geomy,integer)不存在". 我在这个问题上挣扎了一段时间.有什么解决办法吗? 提前感谢!