1

我有以下代码:

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');

如果我转到 url:“https://myacct.firebaseIO.com”,我只会在集合中看到“item3”。我没有看到其他两个。似乎集合对象正在被重写而不是被添加到。如果我手动输入孩子的名字,一切都会奏效。例如,以下工作:

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

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

谢谢。

4

2 回答 2

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

于 2013-01-07T05:36:43.913 回答
0

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

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth == null"
  }
}
于 2016-09-01T05:33:44.110 回答