【问题标题】:how to do complex filtering in DreamFactory API如何在 DreamFactory API 中进行复杂过滤
【发布时间】:2014-06-10 23:19:37
【问题描述】:

我正在考虑将 DreamFactory 用于我的 REST API。我有一个名为“tags”的表,其中有一个名为“lat”的列和一个名为“lon”的列,用于存储位置的纬度和经度在我的“数据库”中

问题是我需要能够将纬度和经度与distance 一起传递给我的服务调用并过滤结果以仅返回行where 位置是

我的 SQL 命令有点生疏,但是是这样的:

SELECT  *,   3956 * 2 * ASIN(SQRT( POWER(SIN((42.347109 - abs(tags.lat)) * pi()/180 / 2),2) + 
COS(42.347109 * pi()/180 ) * COS(  abs (lat) *  pi()/180) * POWER(SIN((-71.075589 – tags.lon) *  
pi()/180 / 2), 2) ))   as distance FROM tags having distance <  2;

谁有做这种过滤器的经验?尤其是 DreamFactory?

【问题讨论】:

    标签: sql api


    【解决方案1】:

    听起来您需要在运行时跨表中的完整记录集执行距离计算。因此,从性能角度来看,您可能希望数据库使用存储过程进行此计算。有关此方法的更多信息,请参阅这篇文章。

    latitude/longitude find nearest latitude/longitude - complex sql or complex calculation

    使用服务器端事件触发存储过程在 DreamFactory 路线图中很快就会出现(不是在 6 月中旬的 1.6 版中,而是在 7 月的下一个版本中)。该功能将允许您从客户端进行 REST API 调用,触发 DreamFactory 运行您的存储过程并将 JSON(或 XML)格式的正确记录返回给客户端。

    DreamFactory 目前支持 MySQL、Postgres 和 SQL Server,因此只要您将这些关系数据库之一用于存储过程,存储过程方法就可以工作(Oracle 和 DB2 也在路线图中)。

    希望对您有所帮助。

    【讨论】:

    • Ben,谢谢.. Dreamfactory 团队一直非常乐于助人。非常感激。也就是说,我正在使用 Dreamfactory 中内置的数据库。我假设因为它是 SQL,所以默认数据库也允许添加存储过程的能力?
    • 乐于助人!只要安装 DreamFactory 开源包(来自 Bitnami 或直接来自 GitHub),就可以将存储过程添加到 DreamFactory 内置的 DB(即 MySQL)中。但是,您不能在 DreamFactory 的免费托管版本中使用存储过程。免费托管版实际上是一个多租户开发人员沙箱,我们不希望像粗略的存储过程这样的流氓进程变得疯狂而导致系统崩溃。
    • 我在亚马逊网络服务上运行它。它是免费安装的。可以吗?
    • 当然,DreamFactory 是一个在 Apache 下获得许可的开源项目,因此可以在任何您喜欢的地方免费使用和安装。 AWS 运行良好。如果您需要任何帮助,请通过 dreamfactory.com 或 community.dreamfactory.com 联系支持
    • 再次感谢本.. 最后一个问题.. 我在 Ubuntu 上运行 vs 1.4.0-2.. 我在哪里/如何检查更新..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多