【发布时间】:2016-04-28 23:05:58
【问题描述】:
我想创建一个包含大量用户数据的应用。假设每个用户跟踪每个任务自己的时间。如果我将它展平存储,它将如下所示:
{
users: {
USER_ID_1: {
name: 'Mat',
tasks: {
TASK_ID_1: true,
TASK_ID_2: true,
...
}
},
},
tasks: {
TASK_ID_1: {
start: 0,
end: 1
},
TASK_ID_2: {
start: 1,
end: 2
}
}
}
现在我想查询并获取用户的所有任务信息。现在数据很小。从他们的指南中:https://www.firebase.com/docs/web/guide/structuring-data.html 它说(接近尾声)“......直到我们进入数万条记录......”然后没有解释如何处理。
所以我的问题如下。我知道我们不能通过安全性进行过滤,但是我可以使用安全性来限制人们可以访问的内容,然后在搜索时基于用户 ID 吗?然后我的结构会变成这样:
{
users: {
USER_ID_1: {
name: 'Mat'
}
},
tasks: {
TASK_ID_1: {
user: USER_ID_1,
start: 0,
end: 1
},
TASK_ID_2: {
user: USER_ID_1,
start: 1,
end: 2
},
...
}
}
然后我会设置我的安全规则,只允许创建它的用户访问每个任务,我的 ref 查询将如下所示:
var ref = new Firebase("https://MY_FIREBASE.firebaseio.com/");
$scope.tasks = $firebaseArray(ref.child('tasks/')
.orderByChild('user')
.startAt('USER_ID_1')
.endAt('USER_ID_1'));
我应该这样构建它吗?我的查询有效,但我不确定在一个用户无法看到其他用户任务的情况下引入安全性后它是否有效。
【问题讨论】:
标签: firebase angularfire firebase-security firebase-realtime-database