如何使firebase对象只写不读的数据?

时间:2016-03-14 20:38:04

标签: javascript angularjs firebase angularfire firebase-security

我仍然是Firebase的新手,并且使用Firebase的安全规则来实现安全性。我正在开发一个项目,我需要在Firebase中保存数据,但我没有客户端来访问数据。基本上存储输入字段的值。但是让它访问它。我正在使用AngularFire并在初始化时使用

var ref = new Firebase(url);
$scope.data = $firebaseObject(ref);

它获取该引用上的所有对象。我尝试更改安全规则

{
".read": false,
"write" : true
}

但是它正在抛出错误

auth_payload = { "uid": "anotherclient", "auth_data": "client" }

2 个答案:

答案 0 :(得分:3)

$firebaseObject()将Firebase服务器中的数据同步到您的客户端。所以没有办法以不读取数据的方式使用它。

但是,如果您只想将数据写入Firebase,可以使用Firebase JavaScript SDK(构建AngularFire库)轻松完成此操作:

ref.set({ 
  title: "How to make a firebase object to only write data not read?",
  url: "http://stackoverflow.com/q/35997606"
})

正如Kato在评论中提到的,来自the role of AngularFire

  

并不总是需要设置AngularFire绑定来与数据库进行交互。在仅写入数据而不在本地同步数据时尤其如此。由于您已经拥有Firebase参考资料,因此仅使用vanilla Firebase客户端库API方法是完全可以接受的。

答案 1 :(得分:1)

尝试".write"而不是"write"

我建议您修改此示例以确保不会覆盖:

// we can write as long as old data or new data does not exist
// in other words, if this is a delete or a create, but not an update
".write": "!data.exists() || !newData.exists()"