【问题标题】:Mapping relational MongoDB data in website : help needed在网站中映射关系 MongoDB 数据:需要帮助
【发布时间】:2017-09-29 06:00:36
【问题描述】:

我运行一个 Android 应用程序,该应用程序在地图上定位具有 ID、名称、所有者、类型、Place_ID 等属性的 OBJECTS,这些属性与 PLACES 相关联。 PLACES 具有 ID、纬度、经度、营业时间、关闭时间等属性,... 数据存储在 Back4App 上的 MongoDB 中,我想保持这种方式。我有一个对象类和一个地方类。 OBJECTS 和 PLACES 之间的关系不是“MongoDB 关系”,它只是 OBJECTS 和 PLACES 类中的常见 String 字段。 为了允许离线访问数据并最大限度地减少数据库服务器请求,该应用程序将设备上的本地 SQLITE 数据库与 MongoDB 在线数据库同步。在 Android 应用中,查询被传递到 SQLITE DB。

我正在尝试创建一个与应用程序执行相同工作的网站,该应用程序显示来自 MongoDB 的过滤数据。

我从一个使用 Parse SDK 的简单 html 和 javascript 网站开始,但遇到了一些困难。

一个简单的查询是列出半径 50 公里内的所有 OBJECTS,即我需要 OBJECTS它们所在的 PLACE。但是,我可以通过 SQLITE 中的 SELECT...JOIN 轻松获得此信息,但我无法通过简单的 Parse 查询获取此信息,因为我也想知道 OBJECTS。而且我不能在 for 循环中运行 2 个异步查询。

您会为这种类型的网站推荐什么网站架构和/或语言?

您建议如何进行?

提前感谢您的帮助。

编辑:ZeekHuge 让我看到了不使用指针的糟糕设计。在我的 MongoDB 中实现指针后,以下是为我完成的代码行:

Parse.initialize("", "");
Parse.serverURL = '';

var eiffel = new Parse.GeoPoint(48.858093, 2.294694);
var myScores = '';
var Enseigne = Parse.Object.extend("ENSEIGNE");
var Flipper = Parse.Object.extend("FLIPPER");

var query = new Parse.Query(Flipper);
var innerquery = new Parse.Query(Enseigne);
innerquery.withinKilometers("ENS_GEO",eiffel,500);

query.equalTo("FLIP_ACTIF", true);
query.include("FLIP_ENSPOINT");
query.include("FLIP_MODPOINT");
query.matchesQuery("FLIP_ENSPOINT", innerquery);
query.find({
  success: function(results) {
    for (var i = 0; i < results.length; i++) {
      var object = results[i];      
      myScores += '<tr><td>' + object.get('FLIP_MODPOINT').get('MOFL_NOM')
      + '</td><td>' + object.get('FLIP_ENSPOINT').get('ENS_NOM')
      + '</td><td>' + object.get('FLIP_ENSPOINT').get('ENS_GEO').latitude
      + '</td><td>' + object.get('FLIP_ENSPOINT').get('ENS_GEO').longitude
      + '</td></tr>';
    }
    (function($) {
      $('#results-table').append(myScores);
    })(jQuery);
  },
  error: function(error) {
    alert("Error: " + error.code + " " + error.message);
  }
});

【问题讨论】:

  • OBJECTS 和 PLACES 之间的关系不是“MongoDB 关系”,它只是 OBJECTS 和 PLACES 类中常见的 String 字段。 :这实际上是一个糟糕的设计,并且没有解决糟糕设计的方法。事实上,Parse-pointer 可以保存所有这些。
  • 我知道这很糟糕。如果我解决了这个问题并提出了正确的指示,它将如何简化我对网站请求的需求?
  • 您可以在单个主查询中创建一个自动获取指向对象的查询。
  • 好的,我明白了,在把指针关系放在适当的位置后,我可以使用 query.include(POINTER) 来获取链接对象的所有属性,对吗?跨度>
  • 是的,没关系

标签: database mongodb sqlite parse-platform


【解决方案1】:

通过用指针替换数据库键并使用 Innerquery 和 include 函数来解决。请参阅有问题的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 2010-11-18
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多