我有以下代码:
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
的方式做错了什么?
感谢。
答案 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"
}
}