Javascript 解析(js)和嵌套查询中的一对多关系
在Parse(js)中创建一对多关系和查询结果时遇到问题 我有一张饭桌和一张菜单桌。餐厅可以有许多菜单项,它们的定义如下: 餐厅餐桌Javascript 解析(js)和嵌套查询中的一对多关系,javascript,parse-platform,Javascript,Parse Platform,在Parse(js)中创建一对多关系和查询结果时遇到问题 我有一张饭桌和一张菜单桌。餐厅可以有许多菜单项,它们的定义如下: 餐厅餐桌 餐厅名称(字符串) 地址(字符串) 菜单表 菜单项名称(字符串) 餐厅(指向餐厅桌子的指针) 我将如何展示所有的餐厅和相应的菜单项 现在我显示的是console.log(),但我不知道该怎么做。下面是我使用的代码 <script> function getRestaurants(){ Parse.initialize("...", ".
餐厅名称(字符串)
地址(字符串) 菜单表
菜单项名称(字符串)
餐厅(指向餐厅桌子的指针) 我将如何展示所有的餐厅和相应的菜单项 现在我显示的是console.log(),但我不知道该怎么做。下面是我使用的代码
<script>
function getRestaurants(){
Parse.initialize("...", "...");
var Restaurant = Parse.Object.extend("Restaurant");
var Menu = Parse.Object.extend("Menu");
var query = new Parse.Query(Restaurant);
query.find({
success:function(results){
for(var i in results){
//second loop- for menu items
var query2 = new Parse.Query(Menu);
query2.include("restaurant");
query2.find({
success:function(results2){
for(var j in results2){
if(results[i] == results2[j].get("restaurant");){
//display restaurant name and all menu items
}
}
}, error: function(error){
console.log("Query Error"+error.message);
}
});
}
},
error: function(error){
console.log("Query Error"+error.message);
}
});
}
getRestaurants();
</script>
函数getRestaurants(){
初始化(“…”,“…”);
var Restaurant=Parse.Object.extend(“Restaurant”);
var Menu=Parse.Object.extend(“菜单”);
var query=newparse.query(餐厅);
查询.查找({
成功:功能(结果){
对于(结果中的var i){
//第二个循环-用于菜单项
var query2=新建Parse.Query(菜单);
问题2.包括(“餐厅”);
查询2.查找({
成功:函数(results2){
对于(结果2中的变量j){
if(results[i]==results2[j].get(“餐厅”);){
//显示餐厅名称和所有菜单项
}
}
},错误:函数(错误){
日志(“查询错误”+错误消息);
}
});
}
},
错误:函数(错误){
日志(“查询错误”+错误消息);
}
});
}
getRestaurants();
编辑1作为概念证明,我想在控制台上显示这一点-注意:本例假设表中有3家餐厅,每个餐厅包含2个菜单项。情况并非总是如此;餐厅的数量和菜单项的数量不是静态的: 餐厅名称1
-菜单项名称1
-菜单项名称2 餐厅名称2
-菜单项名称1
-菜单项名称2 餐厅名称3
-菜单项名称1
-菜单项名称2不要单独查询餐厅。您只需查询
菜单
类,并在餐厅
指针字段上使用包含
。这将确保您拥有所有菜单项,以及包含这些项的完整餐厅详细信息
你应该这样写:
var myQuery = new Parse.Query(Parse.Object.extend("Menu"));
myQuery.include("restaurant");
var myCollection = [];
myQuery.find({
success: function(results){
for(var i = 0; i < results.length; ++i)
{
// This will get you the restaurant name
var rest_name = results[i].get("restaurant").attributes.restaurant_name;
if(!myCollection[rest_name])
{
// This is the first menu item encountered belonging to this restuarant
// Instantiate the array
myCollection[rest_name] = [];
}
else
{
// You have already encountered a menu item belonging to this restaurant before
// Do nothing
}
myCollection[rest_name].push(results[i].get("menu_item_name"));
}
// This will give you the arrays all filled up with data and you can show it in whatever way you want.
}
});
var myQuery=newparse.Query(Parse.Object.extend(“菜单”);
myQuery.include(“餐厅”);
var myCollection=[];
myQuery.find({
成功:功能(结果){
对于(变量i=0;i
编辑:我使用了一个数组来存储动态餐厅信息。您提出了一些好的观点。是的,餐馆的数量并不是一成不变的,这是我正在努力解决的问题之一。我该怎么做呢?@MichaelSmith,另一种选择是使用数组数组。请看我的编辑我是怎么做的。