【问题标题】:Parse - Recipe search by ingredientParse - 按成分搜索食谱
【发布时间】:2014-07-08 13:16:23
【问题描述】:

我的解析中有以下 2 个类,在查询它们以获得我想要的结果时遇到了一些麻烦。我正在尝试按成分搜索食谱。

这是我的课程:成分

+---------------+---------+
| ingredientId  | name    |
+---------------+---------+
|             1 | tomato  |
|             2 | garlic  |
|             3 | banana  |
|             4 | chicken |
|             5 | beef    |
|             6 | onion   |
|             7 | salt    |
+---------------+---------+

食谱

+-----------+------------------+----------------------+
| recipeId  | name             | Ingredients (array)  |
+-----------+------------------+----------------------+
|         1 | hamburger        | {5,7,2}              |
|         2 | salad            | {1,2,6}              |
|         3 | garlic chicken   | {2,4}                |
+-----------+------------------+----------------------+

我正在尝试查询以查找我可以使用给定成分制作的食谱。

示例:成分 (1,2,4) 将响应大蒜鸡肉食谱,因为我拥有此食谱中的所有成分。

任何帮助将不胜感激!

【问题讨论】:

    标签: parse-platform


    【解决方案1】:

    你在这里使用Array而不是Relation有什么具体原因吗?相信Relations会解开你的手……

    我建议将 Recipes.Ingredients 转换为 Relation 数据类型,并继续将成分分配为单个关系。

    这样查询会更容易(您没有指定语言,所以我将在这里坚持使用objective-c):

    // for demonstration purposes these are the ingredients I have and am looking for 
    // suitable recipe
    NSArray *_arrIngredients = @[@"water", @"butter", @"meat", @"bread", @"salt"];
    
    // get objectId for all ingredients I'm searching for
    PFQuery *_query = [PFQuery queryWithClassName:@"Ingredients"];
    [_query whereKey:@"name" containedIn:_arrIngredients];
    
    // query existing relations
    PFQuery *mainQuery = [PFQuery queryWithClassName:@"Recipes"];
    [mainQuery whereKey:@"Ingredients" matchesQuery:_query];
    [mainQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    
        if(error)
        {
            NSLog(@"%@", [error localizedDescription]);
        }
        else
        {
            // print out matching objects
            // your code here
            for(PFObject *object in objects)
            {
                NSLog(@"%@: %@", [object objectForKey:@"name"], [object objectId]);
            }
        }
    }];
    

    希望对你有帮助!

    【讨论】:

    • 嗨大卫,我想做的事 Parse 是不够的,10x 的解释
    【解决方案2】:

    查询将第一个表的所有数据保存在两个数组中..一个用于成分名称,另一个用于成分ID。

    然后再次移动到第二个表应用查询以获取特定收据的数组并将它们保存在列表中(在 android 中)然后....

    当输入任何成分以搜索任何食谱时..您必须检查成分数组中的成分(您从第一个表中制作的)..然后将特定成分 id 传递给列表(来自第二个表) 获取收据名称..

    如果您使用 android 操作系统进行编码,请为此使用实体。或者让我知道我会为此添加代码。

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多