2014-06-11 8 views
1

) .push (새로운 데이터를 입력 생성과 같이 발생/-JPBDARJ67cnr6Yr_nGZ 실패에 : 어떻게중포 기지 .push는() 'permission_denied'오류를

{ 
    "rules": { 
    "users": { 
     ".write": true, 
     "$userid": { 
     ".read": "auth.id == $userid", 
     ".write": true 
     } 
    }, 
    "passes": { 
    ".write": true 
    } 
    } 
} 

어떤 생각 :

내 보안 규칙

을 permission_denied 고쳐?

답변

2

var passes = chatRef.push('passes');으로 전화하면이 문제가 발생합니다. 현재 "pass"에 액세스하는 것뿐만 아니라 실제로이 시점에서 새로운 아이를 만듭니다. 보안 규칙을 사용하면 "통과"에 쓸 수 있지만 "통과"를 허용하지 않습니다.

문제를 해결하려면 var passes = chatRef.push('passes'); 줄을 제거하고 var passes = chatRef.child('passes');으로 바꾸십시오. 그렇게하면 Firebase에서 자식을 생성하지 않고 액세스하게됩니다.

편집 :

자녀를 추가하려면,) (.push 사용

여기
passes.push({ 
    userID: FirebaseRef.user.id, 
    gymName: $(this.options.data.gymName.getContent()).text().split(/[ ]+/).join(' '), 
    price: $(this.options.data.price.getContent()).text().split(/[ ]+/).join(' '), 
    numDays: window.gymDays 
}); 
+0

감사합니다. Timothy. 나는 원래 .child()를 사용하고 있었지만 새로운 패스가 생성 될 때마다 마지막 패스를 덮어 썼다. 기본적으로 패스 목록을 만들고 각 새 패스를 목록에 추가하려고합니다. – NateH

+0

set ({data}) 대신 push ({data})를 사용할 수 있습니다. –

+0

그 덕분에 - 감사합니다 티모! – NateH

0

것은) (.push 사용하여 코드를 작동이되는 기록 중 사용자에 저장됩니다 패스 지역 :

:

var BASE_URL = 'ENTER YOUR FIREBASE URL'; 
var chatRef = new Firebase(BASE_URL); 

var passes = chatRef.child('passes').child(FirebaseRef.user.id); 
passes.push({ 
    userID: FirebaseRef.user.id, 
    gymName: $(this.options.data.gymName.getContent()).text().split(/[ ]+/).join(' '), 
    price: $(this.options.data.price.getContent()).text().split(/[ ]+/).join(' '), 
    numDays: window.gymDays 
}); 

그리고 여기에는 특정 사용자가 패스를 호출하는 방법

var array = [] 

FirebaseRef.chatRef.child('passes').child(FirebaseRef.user.id).limit(100).on('child_added', function(snapshot) {this.array.push(snapshot.val())}.bind(this));