如何在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, 
     }); 
+0

这有帮助!我第一次尝试使用$ firebaseObject和$ firebaseArray,但只有ref工作 - 你必须直接使用ref ... – 2015-05-19 21:55:11

+0

花了我一些时间来理解,但它的工作原理。谢谢 ! – 2015-08-27 10:33:28

对于你的问题,我找到了一个解释。你并不需要使用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。你看,这很容易。