【发布时间】: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