在网站中映射关系MongoDB数据:需要帮助

时间:2017-09-25 16:54:52

标签: database mongodb sqlite parse-platform

我在地图上运行一个Android应用程序,该应用程序使用链接到PLACES的 ID,Name,Owner,Type,Place_ID 等属性来定位OBJECTS。地点具有 ID,纬度,经度,开放时间,关闭时间等属性...... 数据存储在Back4App上的MongoDB中,我希望保持这种状态。我有一个OBJECTS课程和一个PLACES课程。 OBJECTS和PLACES之间的关系不是" MongoDB关系",它只是OBJECTS和PLACES类中的常见String字段。 为了允许离线访问数据并最小化数据库服务器请求,应用程序将设备上的本地SQLITE数据库与MongoDB联机数据库同步。在Android App中,查询将传递到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);
  }
});

1 个答案:

答案 0 :(得分:1)

通过使用指针替换数据库键并使用Innerquery和include函数来解决问题。见例子中提到的问题。