コントローラー内にあるaddCheckin()
メソッドを呼び出しているページがあります。コントローラーでは、次のように参照を作成しようとしています:
var ref = firebase.database().ref("users/" + $scope.whichuser + "/meetings/" +$scope.whichmeeting + "/checkins");
$scope.whichuser
および$scope.whichmeeting
は$routeParams
別のルートから渡しています。これが私のチェックインコントローラーです
myApp.controller("CheckinsController",
['$scope','$rootScope','$firebaseArray','$routeParams','$firebaseObject',
function($scope,$rootScope,$firebaseArray,$routeParams,$firebaseObject){
$scope.whichuser = $routeParams.uid;
$scope.whichmeeting = $routeParams.mid;
var ref = firebase.database().ref("users/" + $scope.whichuser + "/meetings/" +$scope.whichmeeting + "/checkins");
$scope.addCheckin = function(){
var checkinInfo = $firebaseArray(ref);
var data={
firstname:$scope.firstname,
lastname:$scope.lastname,
email:$scope.email,
date:firebase.database.ServerValue.TIMESTAMP
}
checkinInfo.$add(data);
}
}]);/*controller*/
私がここで得ている2つのエラーがあります-
エラー1:
Error: permission_denied at /users/Vp2P1MqKm7ckXqV2Uy3OzTnn6bB3/meetings: Client doesn't have permission to access the desired data.
エラー2:
Error: permission_denied at /users/Vp2P1MqKm7ckXqV2Uy3OzTnn6bB3/meetings/-KT5tqMYKXsFssmcRLm6/checkins: Client doesn't have permission to access the desired data.
そして、これが私が達成しようとしていることです。
アプリのFirebaseコンソールに移動します
サイドメニューからデータベースを選択->上記のタブからルールを選択->このようにルールを更新
{
"rules": {
".read": true,
".write": true
}
}
それがあなたの問題を解決することを願っています。ありがとう:)
Firebaseプロジェクトは、デフォルトでデータベースとしてFirestoreから始まります。
この問題は、アプリケーションが「Firebase Realtime Database」を使用しており、その権限が設定されていない場合に発生する可能性があります。 Firebase Realtime Databaseの読み取りおよび書き込み権限を明示的に付与する必要があります。
そのためには、Firebaseコンソールで、[データベース]> [データベース]> [ルール]> [設定]の横のドロップダウンから[Firestore Beta]ではなく[リアルタイムデータベース]を選択します
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
".read": true,
".write": true
}
}
お役に立てば幸いです!
/ users/{uid}ルートは書き込み可能ですが、読み取りはできないようです。/usersを/ userxに変更すると、すぐに機能し始めました。