作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个原始 SQL 查询。
SELECT
restaurants.name AS restaurant,
ROUND((6371 * ACOS(COS(RADIANS(6.9271)) * COS(RADIANS(restaurants.latitude)) *
COS(RADIANS(restaurants.longitude) - RADIANS(79.8612)) + SIN(RADIANS(6.9271)) *
SIN(RADIANS(restaurants.latitude)))),
2) AS distance,
dishes.price
FROM
restaurants
INNER JOIN
dishes ON restaurants.id = dishes.restaurantId
WHERE
restaurants.status = TRUE
ORDER BY distance
LIMIT 200;
const data = await db.restaurant.findAll({
attributes: ['name'],
include: [{ model: db.dish, attributes: ['price'] }],
where: {
status: true,
},
limit: 200,
});
最佳答案
您可以使用 sequelize.literal()
来包含半正弦距离 -
attributes: [
'name',
[sequelize.literal(`
ROUND((6371 * ACOS(COS(RADIANS(6.9271)) * COS(RADIANS(restaurants.latitude)) *
COS(RADIANS(restaurants.longitude) - RADIANS(79.8612)) + SIN(RADIANS(6.9271)) *
SIN(RADIANS(restaurants.latitude)))), 2)
`, 'distance'],
],
关于sequelize.js - Sequelize 如何将复杂的原始查询转换为 Sequelize 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56765248/
我是一名优秀的程序员,十分优秀!