使用.push()创建输入新数据时,如下所示:
var passes = chatRef.push('passes');
passes.set({
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
})
我从Firebase收到以下提醒:
FIREBASE警告:设置为/ -JPBDARJ67cnr6Yr_nGZ失败:permission_denied
我的安全规则:
{
"rules": {
"users": {
".write": true,
"$userid": {
".read": "auth.id == $userid",
".write": true
}
},
"passes": {
".write": true
}
}
}
知道如何解决?
答案 0 :(得分:2)
当您致电var passes = chatRef.push('passes');
时,会出现此问题。此时您实际上正在创建一个新孩子,而不仅仅是访问孩子"传递"。您的安全规则允许您写入"传递",但他们不允许您创建"传递"。
要解决此问题,请删除行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
});
答案 1 :(得分: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));