Firebase noobie原谅任何事情。
应用的层次结构为containers
和widgets
。每个ID对于其类型都是唯一的(即widgetID
都是唯一的。)
路径如下:containers/<id>/widgets/<id>
要访问容器widgetID
的单个小部件containerID
,我使用:
NSString *ref = [NSString stringWithFormat:@"containers/%@/widget/%@", containerID, widgetID];
FIRDatabaseReference *containers = [fb child:ref]
[[fb child:ref] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) ...
要访问容器containerID
的所有小部件,我使用:
NSString *ref = [NSString stringWithFormat:@"containers/%@/widgets", containerID];
[[fb child:ref] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) ...
应用程序的其他部分可以移动小部件。如何访问我知道移动了ID的特定小部件?我想做的是:
NSString *ref = @"containers/*/widget/123";
[[fb child:ref] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) ...
显然,这不会奏效。是唯一的解决方案,请求每个容器和每个小部件,然后如果所有匹配,在最深的块中触发一些东西? [注意:有很多containers
]
答案 0 :(得分:1)
您可能希望做的事情相当于创建所有小部件的另一个索引,以便您可以通过其唯一ID查询它们。是的,这是数据重复,是的,这对于NoSQL类型的数据库来说很常见。数据结构应该适合您要对其执行的查询类型。
因此,您可以添加# -*- mode: ruby -*-
# vi: set ft=ruby :
require 'vagrant-aws'
Vagrant.configure("2") do |config|
config.vm.box = "aws-dummy"
config.vm.provider :aws do |aws, override|
aws.access_key_id = "my_key_id"
aws.secret_access_key = "my_access_key"
aws.keypair_name = "my_keypair_name"
aws.ami = "ami-916f59f4"
override.ssh.username = "ubuntu"
override.ssh.private_key_path = "/home/my_user/.ssh/id_rsa"
end
end
,其中/widgets/[wid]
是您唯一的小部件ID。该位置可以完全复制wid
中的数据,或者只包含一个引用(需要两个查询)。或任何其他机制,使您能够以您想要的方式查询。