2015-04-05 17 views
6

Tôi đang tạo mảng bằng Angularfire nhưng tôi không thể đặt tên khóa. Firebase tự động cho tôi một khóa bí ẩn (ví dụ: Jm9vLy8Lye-KS35KsmL) nhưng tôi muốn tự đặt nó thành một cái gì đó có ý nghĩa hơn. Đó là chưa rõ làm thế nào tôi làm điều này trong Angularfire. Tôi đang sử dụng phương pháp $ add trên $ firebaseArray:Cách đặt tên khóa trên một mảng trong 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(); 
}); 

Dữ liệu được lưu trữ tốt và tôi có thể nhìn thấy nó trên bảng điều khiển của tôi. Tuy nhiên, id luôn là giá trị firebase khó hiểu. Tôi rất muốn có thể tự đặt mình vào một cái gì đó có ý nghĩa. Trong trường hợp của tôi, ID của từng bệnh nhân sẽ có ý nghĩa ...

Bất kỳ suy nghĩ nào?

Cảm ơn bạn!

Trả lời

0

Thêm mục vào một mảng firebase làm cho firebase xác định id duy nhất cho bạn. Nếu đây không phải là những gì bạn muốn, tôi nghĩ rằng bạn có thể thử nhận được các "tin nhắn" đối tượng với $ firebaseObject, thay vì chỉ nhận được danh sách với $ firebaseArray. Sau đó, bạn sẽ có thể chỉnh sửa đối tượng của bạn trong js, để thêm các mục của bạn vào bộ sưu tập tin nhắn. Bằng cách này, bạn có thể sử dụng id phù hợp nhất với nhu cầu của bạn. Cuối cùng, bạn phải $ save() toàn bộ đối tượng của bạn. Hãy xem tại đây: https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject

Hy vọng điều này sẽ hữu ích.

1

Cảm ơn bạn đã trả lời.

Tôi thấy rằng chức năng con sẽ làm những gì tôi cần. Lần đầu tiên tôi xác định đứa trẻ và sau đó đặt nó.

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

Điều này đã giúp! Lần đầu tiên tôi đã cố gắng sử dụng cả $ firebaseObject và $ firebaseArray, nhưng chỉ ref làm việc - bạn phải sử dụng ref trực tiếp ... –

+0

Đã cho tôi một thời gian để hiểu điều đó, nhưng nó hoạt động. Cảm ơn ! –

0

Đối với câu hỏi của bạn, tôi đã tìm thấy giải thích. Bạn không cần phải sử dụng firebaseObject, bạn nên sử dụng ref trực tiếp:

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

Trong mã, tôi sử dụng ref để tham chiếu URL của tôi. Với profileRef, tôi đã tạo một hồ sơ con và tôi đã thêm id cho cấu hình. Sau đó, tôi sử dụng ref trực tiếp để đặt giá trị profile cho id mà tôi muốn. Bạn thấy đấy, nó rất dễ dàng.

Các vấn đề liên quan