在我的应用中,我正在使用Parse.com
服务。我有名为Item
和Price
的实体。一个项目可能有多个价格,这意味着每个价格对象都有对其项目的引用。物品根本不知道价格。
我的目标是在一个查询中获取项目及其价格。如果我有一个具有一系列价格的物品,那将非常简单。我会做以下事情:
PFQuery* itemsQuery = [PFQuery queryWithClassName:@"Item"];
[itemsQuery includeKey:@"Prices"];
但我没有阵列。所以我将被迫连续两次查询。第一个将获取项目,一旦项目准备好,我将创建第二个:
PFQuery* query = [PFQuery queryWithClassName:@"Price"];
[query whereKey:@"Item" equalTo:fetchedItem];
但我不喜欢它。我想在一个查询中获取项目及其价格。不使用数组甚至可以做到这一点吗?
答案 0 :(得分:1)
你正在考虑很多RDBMS和小NoSQL。解析数据库是一个NoSQL存储库,因此您不具有与使用关系数据库相同的特性。
在这种情况下的解决方案是 - 在NoSQL中,在这种情况下比连接表更常见 - 将价格存储在Item
实体内的数组结构中并查询。
以下是Parse.com
论坛的相关链接:
https://www.parse.com/questions/how-to-join-several-tables-with-one-to-many-relationship
答案 1 :(得分:0)
您的“价格”类需要该项目的“指针”列。指针是PFObjects,在你的情况下 - 'Item'对象。然后你可以在'Price'类上进行查询,得到一个价格对象数组(NSArray *对象):
PFQuery *query = [PFQuery queryWithClassName:@"Price"];
[query includeKey:@"item"];
[query whereKey:@"item" equalTo:selectedItem];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (objects) {
// do something with price objects here
}
}];