我正在使用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始终是一个神秘的火力值。我希望能够将自己设定为有意义的东西。在我的情况下,个别患者的身份证会有意义......
有什么想法吗?
谢谢!
答案 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
。你看,这很容易。