/ / Firebase. Validate error - json, firebase-database, firebase-security

Firebase. Перевірте помилку - json, firebase-database, firebase-security

У мене є база даних Firebase, організована наступним чином.

Організація моєї бази даних

Як ви можете бачити, це масив словників (кожен словник містить дві записи, "text" і "tag").

Він містить наступні правила. Що я хочу зробити, це переконатися, що newData містить рядок під назвою "текст" і рядок, який називається "тегом".

{
"rules": {
".read": "auth != null",

".write": "!data.exists() || !newData.exists()",

//Can write only Array with text and tag
".validate": "newData.hasChildren(["text", "tag"])",
"$other": {
".validate": false
},
"text": {
".validate": "newData.isString()"
},
"tag": {
".validate": "newData.isString()"
}
}
}

Коли я надаю їй наступний JSON, він говорить, що "моделювання написання було відхилено" у рядку 10 ".validate": "newData.hasChildren(["text", "tag"])", )

Файл JSON:

 {
"3": {
"text": "text message",
"tag": "this is a tag"
}
}

Як я повинен писати мої правила? Дякую за твою допомогу.

Відповіді:

2 для відповіді № 1

Ви визначаєте правило перевірки на один рівень занадто високо. Зараз ви перевіряєте, що в цілому база даних має дітей tag і textЗамість цього ви хочете перевірити, що у кожного дочірнього вузла під коренем є ці діти, для чого потрібно визначити $ Правило змінної:

{
"rules": {
".read": "auth != null",
"$childid": {
".write": "!data.exists() || !newData.exists()",

//Can write only Array with text and tag
".validate": "newData.hasChildren(["text", "tag"])",
"$other": {
".validate": false
},
"text": {
".validate": "newData.isString()"
},
"tag": {
".validate": "newData.isString()"
}
}
}
}