Firebase:阻止除 .push 之外的所有列表
Firebase: prevent all but .push to a list
我已经阅读 In firebase, can I set permissions to allow only PUSH operations to a given object? 并且到目前为止复制了它,但是它不起作用。
我有一个匿名使用的网站,也是我收集评论的网站。我想存储要添加的新数据,但要防止编辑和删除现有数据。
Angular 2,用AngularFire2
export class FirebaseService {
comments: FirebaseListObservable<Object>;
locations: FirebaseListObservable<Object>;
constructor(private af: AngularFire) {
this.comments = this.af.database.list(environment.stem + '/comments');
}
addComment(comment) {
return this.comments.push(comment)
.catch(err => console.error(err));
}
}
我预计这条规则会执行,因为在我推送的情况下不会有现有数据?
{
"rules": {
".read": true,
".write": "!data.exists()"
}
}
将写入规则设置为 true
使其工作但比我想要的更宽松。
这是数据库这条路径中现有 json 的开始(这里的键来自我正在迁移的服务)
{
"0763a8d3e2407697" : {
"comment" : "Thanks for your comments and feedback, Simon",
"date" : "Sat Jan 03 2015 08:46:17 GMT+0100 (CET)"
},...
根据您当前的规则,只要数据库中存在 任何 数据,数据库服务器就会拒绝写入。
但是您的用例似乎只想拒绝覆盖特定现有评论的写入。对于该用例,您应该将 .write
规则放在树的较低位置:
{
"rules": {
".read": true,
"$stemid": {
"comments": {
"$commentid": {
".write": "!data.exists() && newData.exists()"
}
}
}
}
}
这些规则use $ variables
确保它们适用于所有词干和所有评论。
我已经阅读 In firebase, can I set permissions to allow only PUSH operations to a given object? 并且到目前为止复制了它,但是它不起作用。
我有一个匿名使用的网站,也是我收集评论的网站。我想存储要添加的新数据,但要防止编辑和删除现有数据。
Angular 2,用AngularFire2
export class FirebaseService {
comments: FirebaseListObservable<Object>;
locations: FirebaseListObservable<Object>;
constructor(private af: AngularFire) {
this.comments = this.af.database.list(environment.stem + '/comments');
}
addComment(comment) {
return this.comments.push(comment)
.catch(err => console.error(err));
}
}
我预计这条规则会执行,因为在我推送的情况下不会有现有数据?
{
"rules": {
".read": true,
".write": "!data.exists()"
}
}
将写入规则设置为 true
使其工作但比我想要的更宽松。
这是数据库这条路径中现有 json 的开始(这里的键来自我正在迁移的服务)
{
"0763a8d3e2407697" : {
"comment" : "Thanks for your comments and feedback, Simon",
"date" : "Sat Jan 03 2015 08:46:17 GMT+0100 (CET)"
},...
根据您当前的规则,只要数据库中存在 任何 数据,数据库服务器就会拒绝写入。
但是您的用例似乎只想拒绝覆盖特定现有评论的写入。对于该用例,您应该将 .write
规则放在树的较低位置:
{
"rules": {
".read": true,
"$stemid": {
"comments": {
"$commentid": {
".write": "!data.exists() && newData.exists()"
}
}
}
}
}
这些规则use $ variables
确保它们适用于所有词干和所有评论。