2015-08-15 339 views
0

我正在与解析的JS-SDK工作中的对象的项目,并具有如下的数据结构的数据库:包括从指针对象,它是一个数组

{"ingredients": 
    [ 
    {"amount": 100, "name": "sugar", "unit": {"__type":"Pointer","className":"Unit","objectId":"xxxxxxxxxxx"}}, 
    {"amount": 300, "name": "milk", "unit": {"__type":"Pointer","className":"Unit","objectId":"xxxxxxxxxxx"}} 
    ] 
} 

“的成分”是阵列食谱类的列。

我该如何查询配方以包含“单位” - 对象?这是我到目前为止:

var Recipe = Parse.Object.extend("Recipe"), 
    RecipeQuery = new Parse.Query(Recipe); 
RecipeQuery.include("ingredients"); 
RecipeQuery.include("ingredients.unit"); 
RecipeQuery.find(...); 

我希望有人能帮助我在这里,这将不胜感激!

回答

0

如果你的数据结构是这样的:

{"ingredients": 
    [ 
    {"__type":"Pointer", "className":"Unit", "objectId":"FKxndF7X9H"}, 
    {"__type":"Pointer", "className":"Unit", "objectId":"mXVGZDglZN"} 
    ] 
} 

然后你就可以只使用recipeQuery.include("ingredients");采取这些单位。它将检索数组中的所有嵌套对象。但是,如果您将字典放入数组中,则此方法不起作用。

我认为一个解决办法是建立在Recipe称为units一个新的数组字段。这从ingredients阵列中得到unit。所以你将有两个阵列ingredientsunits

其他的解决方案可能是创建一个新的类。像Ingredient其中有name,amountunit字段。 ingredients数组将包含指向Ingredient对象的指针。

+0

首先,thx为您的答案。 你的第一个解决方案不会帮助我,因为我会失去跟踪哪个成分有哪个单位。 我也想过第二种解决方案(通过成分类),但我仍然希望有可能避免这种情况;) – Argee

+0

你实际上不会失去跟踪哪种成分有哪个单位。填充单位数组时,使用配料数组的相同顺序。成分[0]单位将以[0]为单位。 – knshn

+0

哦,当然,你是对的!我明天会给它一个镜头! – Argee