push()目前无法在Firebase中运行,还是我做错了什么?

时间:2013-01-07 05:14:57

标签: firebase

我有以下代码:

var myRootRef = new Firebase('https://myacct.firebaseIO.com');
var collectionRef = myRootRef.child('collection');
var pushRef = collectionRef.push();

pushRef.set('item1');
pushRef.set('item2');
pushRef.set('item3');

如果我转到网址:'https://myacct.firebaseIO.com',我在集合中只看到'item3'。我没有看到其他两个。似乎正在重写集合对象而不是将其添加到。如果我手动输入子名称,就可以了。例如,以下工作:

collectionRef.child(1).set('item1');
collectionRef.child(2).set('item2');
collectionRef.child(3).set('item3');

这是一个错误,还是我使用push的方式做错了什么?

感谢。

2 个答案:

答案 0 :(得分:6)

您编写的代码按预期工作。 push()是一个帮助器,它创建一个具有唯一名称的新子项的引用,这是在Firebase中创建项列表的好方法。

您的代码可以按如下方式重写:

var myRootRef = new Firebase('https://myacct.firebaseIO.com');
var collectionRef = myRootRef.child('collection');

collectionRef.push().set('item1');
collectionRef.push().set('item2');
collectionRef.push().set('item3');

push()可以选择接受一个参数,该参数将被设置为新引用的值。因此,您可以稍微缩短代码:

collectionRef.push('item1');
collectionRef.push('item2');
collectionRef.push('item3');

您可以在此处详细了解如何使用push(): https://www.firebase.com/docs/managing-lists.html

答案 1 :(得分:0)

我无法在Firebase数据库中推送任何内容,解决方案是删除编写所需的身份验证。 单击数据库(左侧面板),然后单击Rules选项卡。 将write更改为auth == null。像这样:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth == null"
  }
}