我有一個定義了型別屬性的Address模型。我想創建當我通過一個函式,和它回傳的所有地址的該范圍內(以米為單位)。我試圖遵循這里寫的內容,但我得到了:pointgeometrylatitudelongituderange
DatabaseError [SequelizeDatabaseError]: LWGEOM_dwithin: Operation on mixed SRID geometries (Point, 4326) != (Point, 0)
這是我point在Address模型中定義的方式:
point: {
type: DataTypes.GEOMETRY('Point'),
allowNull: true,
},
這是我正在嘗試撰寫的函式:
const findInRangeFrom = (latitude, longitude, range) => {
return Address.findAll({
attributes: {
include: [[
Sequelize.fn(
'ST_Distance',
Sequelize.col('point'),
Sequelize.fn('ST_MakePoint', longitude, latitude),
),
'distance',
]],
},
where: Sequelize.where(
Sequelize.fn(
'ST_DWithin',
Sequelize.col('point'),
Sequelize.fn('ST_MakePoint', longitude, latitude),
range,
),
true,
),
order: Sequelize.literal('distance ASC'),
});
};
我怎樣才能使這項作業?
uj5u.com熱心網友回復:
如果 DB 中的幾何圖形存盤在 SRID 4326 中,那么您需要為您的測驗點設定相同的 SRID,如下所示:
Sequelize.fn('ST_SetSRID', Sequelize.fn('ST_MakePoint', longitude, latitude), 4326)
如果反之,則您需要為該point列指明 SRID 4326 :
Sequelize.fn('ST_SetSRID', Sequelize.col('point'), 4326)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377447.html
標籤:javascript 节点.js PostgreSQL的 sequelize.js
上一篇:如何使用使用建構式放入的函式
