2015-04-05 63 views
6

我使用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始終是一個神祕的火力點價值。我希望能夠自己設定一些有意義的東西。在我的情況下,單個病人的身份證將是有意義的...

有什麼想法?

謝謝!

回答

0

將項目添加到Firebase數組使Firebase爲您定義唯一的ID。如果這不是你想要的,我想你可以嘗試使用$ firebaseObject獲取「消息」對象,而不是隻使用$ firebaseArray獲取列表。然後,您將能夠在js中編輯您的對象,以便將您的項目添加到消息集合中。通過這種方式,您可以使用最適合您需要的ID。最後,你必須$ save()你的整個對象。看看這裏:https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject

希望這會有所幫助。

1

感謝您的回覆。

我發現子功能會做我需要的。我首先指定孩子然後設置它。

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

0

對於你的問題,我找到了一個解釋。你並不需要使用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。你看,這很容易。