Firebase - 对象与数组并返回.key()

时间:2015-05-18 04:24:57

标签: javascript arrays object firebase angularfire

我正在使用firebase + angularfire来处理一个项目,该项目涉及多个用户同时编辑数据(这会使对象成为理想对象)以及快速排序和过滤数据的需求(非常适合数组)。 那么,对我来说会更好:

1)使用FirebaseObject,然后使用角度toArray过滤器进行排序

2)使用FirebaseArray并确保使用$ add来确保使用唯一ID(甚至将推送ID作为推送对象本身的属性存储)。

目前,我们正在使用第二个选项,这引出了我的第二个问题: 当我使用$ push时,如何将ref.key()返回给控制器? 修改API指南中的示例:

char const *str1 = "bleah 1";
unsigned char str2[] = "bleah 2";

如何在调用addItem函数时返回要返回的id变量?即使我在列表外声明一个变量。$ add function并在函数中设置变量,我得到一个未定义的结果。

2 个答案:

答案 0 :(得分:1)

一种方法是回退使用Firebase的常规JavaScript SDK。

curl --key client.key --cert client.crt:clientPassword mySecureSite.com\api\call

但如果您需要新参考的var list = $firebaseArray(ref); var addItem = function(itemDataObject) { var newItemRef = ref.push(itemDataObject); var id = newItemRef.key(); console.log("added (or still adding) record with id " + id); return id; }; 以外的其他内容,那么您需要等到它可用。

在这种情况下,最简单的方法是返回承诺:

key()

接下来会发生什么,取决于调用代码以及您希望它做什么。

由于您想要返回异步操作的结果,您可以从此处阅读我的答案及其中的链接中受益:Asynchronous access to an array in Firebase

答案 1 :(得分:0)

一个可能的问题似乎是id的变量声明,即使该变量是全局声明的。

例如:

var id;
function setIDVal1(){
  var id=10;
}

function setIDVal2(){
  id=101;    
}

function getIDVal(){
    alert(id);
}

检查此fiddle是否存在本地变量问题&请查看此fiddle以获取ID。