如何在Angularfire中设置数组的密钥名称
我使用Angularfire创建数组,但我无法设置密钥名称。 Firebase会自动给我一个神秘的关键字(例如Jm9vLy8Lye-KS35KsmL),但我想将它自己设置为更有意义的内容。目前还不清楚我在Angularfire中如何做到这一点。我在$ firebaseArray上使用$ add方法:如何在Angularfire中设置数组的密钥名称
var firebaseRef = new Firebase("https://firebase_location");
$scope.messages = $firebaseArray(firebaseRef);
$scope.messages.$add(
{
FirstName: patient.FirstName,
LastName: patient.LastName
}
).then(function(firebaseRef) {
var id = firebaseRef.key();
});
数据存储正常,我可以在我的仪表板上看到它。但是,id始终是一个神秘的火力点价值。我希望能够自己设定一些有意义的东西。在我的情况下,单个病人的身份证将是有意义的...
有什么想法?
谢谢!
将项目添加到Firebase数组使Firebase为您定义唯一的ID。如果这不是你想要的,我想你可以尝试使用$ firebaseObject获取“消息”对象,而不是只使用$ firebaseArray获取列表。然后,您将能够在js中编辑您的对象,以便将您的项目添加到消息集合中。通过这种方式,您可以使用最适合您需要的ID。最后,你必须$ save()你的整个对象。看看这里:https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject
希望这会有所帮助。
感谢您的回复。
我发现子功能会做我需要的。我首先指定孩子然后设置它。
var patient_child = firebaseScreenRef.child(patient.PatientId);
patient_child.set(
{
FirstName: patient.FirstName,
LastName: patient.LastName,
});
对于你的问题,我找到了一个解释。你并不需要使用firebaseObject,你应该裁判直接使用:
var ref = new Firebase(FURL);
createProfile: function(id ,user) {
var profile = {`enter code here`
name: user.name,
email: user.email,
gravatar: get_gravatar(user.email, 40)
};
var profileRef = $firebaseArray(ref.child('profile').child(id));
return ref.child('profile').child(id).set(profile);
},
在代码中,我使用参考引用我的网址。通过profileRef,我创建了一个子配置文件,并为配置文件添加了id。之后,我使用ref直接为我想要的id设置值profile
。你看,这很容易。
这有帮助!我第一次尝试使用$ firebaseObject和$ firebaseArray,但只有ref工作 - 你必须直接使用ref ... – 2015-05-19 21:55:11
花了我一些时间来理解,但它的工作原理。谢谢 ! – 2015-08-27 10:33:28