2017-01-18 3 views
0

Мое правило выглядит следующим образом -Добавление данных в firebase после выполнения аутентификации

{ 
"rules": { 
    "customer": { 
     "$user_id": { 
      ".write": false, 
      ".read" : "$user_id === auth.uid" 
     } 
    }, 
    "franchises": 
    { 
     ".read": true, 
     ".write": "root.child('customer').hasChild(newData.child('salon_id').val())" 
    } 
} 
} 

Я хочу добавить данные в франшиз, который имеющих salon_id, и я хочу, чтобы убедиться, что это salon_id существует в клиента как uid.

Я получаю ошибку

PERMISSION_DENIED: Отказано в

Отредактировано с кодом -

var ref = firebase.database().ref('franchises'); 
ref.push({ 
    address: address, 
    contact_no: contact_no, 
    contact_person_name: contact_person_name, 
    name: textinputPlaceName, 
    salon_id: salon_id 
}); 

данных выглядит следующим образом - enter image description here

+0

Не видя минимального кода, вызывающего это сообщение об ошибке, трудно помочь. –

+0

Что мне следует публиковать структуру данных? – Anirban

+0

Сообщение об ошибке, которое вы включили, является триггером при выполнении определенного фрагмента кода. Вам нужно включить минимальный код, который вызывает проблему в вашем вопросе. –

ответ

0

Вы упускаете уровень в правилах:

"franchises": { 
    ".read": true, 
    ".write": "root.child('customer').hasChild(newData.child('salon_id').val())" 
} 

Это относится, когда вы пишете franchises. Но так как ваш код вызывает ref.push(), вы пишите на один уровень глубже. Таким образом, правила должны быть следующими:

"franchises": { 
    ".read": true, 
    "$franchiseId": { 
     ".write": "root.child('customer').hasChild(newData.child('salon_id').val())" 
    } 
} 
+0

То же самое, все еще получаю PERMISSION_DENIED – Anirban

+0

Я только обновил правила, мне нужно обновить код? – Anirban

+0

Я передаю $ franchiseId как push(), поэтому он автоматически генерирует, может быть, это и вызывает проблему. Это @frank? – Anirban