我正在使用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不返回对象数组,但每个项目都是设置中的对象,具有自己的密钥。
答案 0 :(得分:2)
$add
会返回Firebase参考号。在该引用上致电name()
。
scope.settings.$add(…).name();
请参阅https://github.com/firebase/angularFire/blob/master/angularfire.js#L127。
答案 1 :(得分:0)
:
$ 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的保存/写入尝试的结果执行不同的操作。