【发布时间】:2017-03-23 22:14:44
【问题描述】:
尝试使用 sequelize 内置的 ORM 便利包括带有原始 PostGIS 查询的语法。
这个调用正确地加入了相关的promotionImage和category表,就像我需要的那样,但它不会像我需要的那样对我的数据库进行地理查询:
promotion.findAll({
include: [{
model: promotionImage
}, {
model: category
}]
}).then(promoters => {
res.json(promoters)
}).catch(err => {
console.log('ERROR: ', err)
})
另一方面,此查询在提供的 lat/lng 范围内正确找到了“促销”,但它没有正确连接关联的promotionImage 和类别表:
const query = '\
SELECT * \
FROM "promotions" \
WHERE "promotions"."location" && ST_MakeEnvelope(:southWestLng, :southWestLat, :northEastLng, :northEastLat)'
replacements = {
southWestLng,
southWestLat,
northEastLng,
northEastLat
}
db.sequelize.query(query, {
replacements,
type: sequelize.QueryTypes.SELECT,
model: promotion,
include: [{
model: promotionImage
}, {
model: category
}]
}).then(promoters => {
res.json(promoters)
}).catch(err => {
console.log('ERROR: ', err)
})
有没有办法既使用ST_MakeEnvelope 语法进行查询,又使用 sequelize 和 postGIS 包含来自其他模型的数据?
【问题讨论】:
标签: node.js postgresql sequelize.js postgis