在网站中映射关系 MongoDB 数据:需要帮助
Mapping relational MongoDB data in website : help needed
我 运行 一个 Android 应用程序可以定位具有 ID、名称、所有者、类型、Place_ID 等属性的对象去地方,在地图上。 PLACES 具有 ID、纬度、经度、开放时间、关闭时间等属性... 数据存储在 Back4App 上的 MongoDB 中,我想保持这种状态。我有一个 class 用于 OBJECTS,一个 class 用于 PLACES。 OBJECTS 和PLACES 之间的关系不是"a MongoDB relation",它只是OBJECTS 和PLACES class 中的一个普通String 字段。
为了允许离线访问数据并最大限度地减少数据库服务器请求,该应用程序将设备上的本地 SQLITE 数据库与 MongoDB 在线数据库同步。在 Android 应用程序中,查询被传递到 SQLITE 数据库。
我正在尝试制作一个与应用程序执行相同工作的网站,该应用程序显示来自 MongoDB 的过滤数据。
我从一个使用 Parse SDK 的简单 html 和 javascript 网站开始,但我遇到了一些困难。
一个简单的查询是列出半径 50 公里内的所有 OBJECTS,即我需要 OBJECTS 和 它们所在的 PLACE。但是,在 SQLITE 中使用 SELECT...JOIN 可以轻松获得此信息,但我无法通过简单的 Parse 查询获取此信息,因为我也想知道 OBJECTS。而且我不能在 for 循环中 运行 2 个异步查询。
对于此类网站,您会推荐哪种网站架构 and/or 语言?
您建议如何进行?
在此先感谢您的帮助。
编辑: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);
}
});
通过用指针替换数据库键并使用 Innerquery 和 include 函数解决。请参阅有问题的示例。
我 运行 一个 Android 应用程序可以定位具有 ID、名称、所有者、类型、Place_ID 等属性的对象去地方,在地图上。 PLACES 具有 ID、纬度、经度、开放时间、关闭时间等属性... 数据存储在 Back4App 上的 MongoDB 中,我想保持这种状态。我有一个 class 用于 OBJECTS,一个 class 用于 PLACES。 OBJECTS 和PLACES 之间的关系不是"a MongoDB relation",它只是OBJECTS 和PLACES class 中的一个普通String 字段。 为了允许离线访问数据并最大限度地减少数据库服务器请求,该应用程序将设备上的本地 SQLITE 数据库与 MongoDB 在线数据库同步。在 Android 应用程序中,查询被传递到 SQLITE 数据库。
我正在尝试制作一个与应用程序执行相同工作的网站,该应用程序显示来自 MongoDB 的过滤数据。
我从一个使用 Parse SDK 的简单 html 和 javascript 网站开始,但我遇到了一些困难。
一个简单的查询是列出半径 50 公里内的所有 OBJECTS,即我需要 OBJECTS 和 它们所在的 PLACE。但是,在 SQLITE 中使用 SELECT...JOIN 可以轻松获得此信息,但我无法通过简单的 Parse 查询获取此信息,因为我也想知道 OBJECTS。而且我不能在 for 循环中 运行 2 个异步查询。
对于此类网站,您会推荐哪种网站架构 and/or 语言?
您建议如何进行?
在此先感谢您的帮助。
编辑: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);
}
});
通过用指针替换数据库键并使用 Innerquery 和 include 函数解决。请参阅有问题的示例。