如何在Angularfire中的数组上设置键名

时间:2015-04-05 19:09:51

标签: angularjs firebase angularfire

我正在使用Angularfire创建数组,但我无法设置密钥名称。 Firebase会自动给我一个神秘的密钥(例如Jm9vLy8Lye-KS35KsmL),但我想把它自己设置为更有意义的东西。目前还不清楚我是如何在Angularfire中做到这一点的。我在$ firebaseArray上使用$ add方法:

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始终是一个神秘的火力值。我希望能够将自己设定为有意义的东西。在我的情况下,个别患者的身份证会有意义......

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

感谢您的回复。

我发现子功能可以满足我的需要。我首先指定孩子,然后设置它。

var patient_child = firebaseScreenRef.child(patient.PatientId); 
      patient_child.set(
        { 
            FirstName: patient.FirstName, 
            LastName: patient.LastName, 
        });

答案 1 :(得分:0)

将项添加到firebase数组会使firebase为您定义唯一的ID。如果这不是您想要的,我想您可以尝试获取"消息"使用$ firebaseObject对象,而不是仅使用$ firebaseArray获取列表。然后,您将能够在js中编辑对象,以便将项目添加到消息集合中。通过这种方式,您可以使用最适合您需求的ID。最后,你必须$ save()你的整个对象。看这里:https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject

希望这有帮助。

答案 2 :(得分:0)

对于你的问题,我找到了解释。您不需要使用firebaseObject,您应该直接使用ref:

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);
},

在代码中,我使用ref来引用我的URL。使用profileRef,我创建了一个子配置文件,并为配置文件添加了id。之后,我直接使用ref为我想要的id设置值profile。你看,这很容易。