ユーザーがアイテムを作成し、他のユーザーがそれらのアイテムを購読できるようにするアプリケーションを作成しています。ユーザーがアイテムを複数回サブスクライブできないようにするルールを作成するのに苦労しています。
これが私のデータ構造の例です(匿名化されているため、「OMITTED」値です):
{
"OMITTED" : {
"name" : "Second",
"body" : "this is another",
"userName" : "Some User",
"userId" : "OMITTED",
"created" : 1385602708464,
"subscribers" : {
"OMITTED" : {
"userName" : "Some User",
"userId" : "OMITTED"
}
}
}
}
現在、私のFirebaseルールは次のとおりです。
{
"rules": {
".read": true,
".write": "auth != null",
"items": {
"$item": {
".write": "!data.exists()",
".validate": "newData.hasChildren(['name', 'body', 'userId', 'userName']) && newData.child('userId').val() == auth.id",
"subscribers": {
"$sub": {
".validate": "newData.hasChildren(['userId', 'userName']) && newData.child('userId').val() != data.child('userId').val()"
}
}
}
}
}
}
ユーザーが複数回購読できないようにするにはどうすればよいですか? subscribers
に基づいて、リスト内でユーザーの重複を防ぐために必要なルールは何userId
ですか?