$ add之后获取密钥的最佳方式

时间:2014-01-09 15:26:28

标签: javascript angularjs angularfire

我正在使用angularFire v 0.5.0

在我退回的对象上,我做了一个$ add。

获取生成密钥的最佳方法是什么?

它必须是$ add的成功回调中的东西,因为密钥会回来asynchrounlusly?

scope.settings = $firebase(ref);

scope.settings.value = {
    vat: {
      inclusive: true
    }
}
            }
scope.settings.$add (scope.settings.value).then( function ( {
  scope.settings.key = ???
});

注意:这不是实际的代码,这只是为了澄清问题。

活动代码位于加载事件的工厂内部,并检查数据库中是否已存在设置对象。

这个有点奇怪的结构是让工厂的消费者更容易更改设置。设置是单身。 AngularFire不返回对象数组,但每个项目都是设置中的对象,具有自己的密钥。

3 个答案:

答案 0 :(得分:2)

$add会返回Firebase参考号。在该引用上致电name()

scope.settings.$add(…).name();

请参阅https://github.com/firebase/angularFire/blob/master/angularfire.js#L127

答案 1 :(得分:0)

来自angularfire文档的

  

$ add方法接受任何类型的单个参数。它会将此值附加为列表的成员(按时间顺序排序)。这相当于在Firebase引用上调用push(value)。

来自firebase文档(关于push()):

  

返回   生成位置的Firebase参考。

所以,我认为你想要的“关键”是$ add的返回值。

答案 2 :(得分:0)

也许他们已经在新版本中进行了更改,现在它的工作原理如下:

$ add()将返回一个promise。您必须使用成功运行的回调。例如:

var something = $scope.somethings.$add({name: "foo"});
something.then(function(e) {
    console.log(e.name())
});

这允许您根据对Firebase的保存/写入尝试的结果执行不同的操作。