【问题标题】:SQL Query in Sequelize getter methodSequelize getter 方法中的 SQL 查询
【发布时间】:2014-08-19 14:32:00
【问题描述】:

我正在使用 Postgres 扩展 'earthdistance' 进行纬度/长途计算。

我也在使用 Sequelize 来访问数据库,我想定义一个 getter 距离一组坐标计算排序的方法。

以下查询工作正常:

SELECT name, 
       earth_distance(ll_to_earth( 51.5241182, -0.0758046 ), 
       ll_to_earth(latitude, longitude)) as distance_from_current_location 
FROM "Branches" 
ORDER BY distance_from_current_location ASC;

我可以使用 sequelize.query() 来使用它,但我想将所有模型查询保留为模型的一部分。

如何在模型定义的 getter 方法中指定 WHERE 条件?

谢谢!

【问题讨论】:

  • 我想在 postgres 中使用 sequelize 做同样的事情。你最后做了什么?

标签: node.js postgresql sequelize.js


【解决方案1】:

您最好的选择可能是将查询包装在存储过程中,并在 where 子句中传递您想要使用的参数。随着存储过程的编译,这将比动态 SQL 执行得更好,在动态 SQL 中您可以动态生成 W​​HERE 子句。

根据需要将任何参数和类型添加到存储过程中,结果将如下所示:

CREATE FUNCTION GetEarthDistance (v_Foo bigint) RETURNS type AS $$
DECLARE 
   v_Name varchar(256);
BEGIN
SELECT name INTO v_Name, 
   earth_distance(ll_to_earth( 51.5241182, -0.0758046 ), 
   ll_to_earth(latitude, longitude)) as distance_from_current_location 
FROM Branches 
WHERE somecol > v_foo
ORDER BY distance_from_current_location ASC;

RETURN v_Name; 
END;
$$ LANGUAGE 'plpgsql';

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 2017-03-23
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2013-09-09
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多