Tôi muốn tải tất cả các mục khi bắt đầu mà không hiển thị bất kỳ tin nhắn nào, nhưng một lần sau khi được tải. Tôi muốn chụp bất kỳ hàng mới nào trong người đăng ký và hiển thị nó cho thông báo trên màn hình.cách kiểm tra xem đăng ký có được tải tất cả các hàng hiện có không?
Vấn đề là, tôi không chắc chắn làm thế nào để kiểm tra xem tất cả các mục trước đó có được tải không và nếu hàng là mục mới hoặc là hàng từ mục hiện có trước đó.
this.items = this.af.database.list('notifications/'+this.uid+'/');
this.items.subscribe(list => {
list.forEach(row => {
// doing something here...
});
// once all the rows are finished loading, then any new row, show desktop notification message
});
AngularFire2 đang thực hiện việc này trong nội bộ và phát ra một loạt các 'hàng' hiện tại từ quan sát được. Bạn sẽ phải tự kiểm tra mảng, để xác định có gì mới. Thay vào đó, bạn có thể sử dụng API Firebase cơ bản. Nếu bạn sử dụng 'on (" child_added ", ...)' và 'once (" value ", ...)', các sự kiện 'child_added' bạn nhận được trước sự kiện' value' sẽ đại diện cho 'hàng' ban đầu và các sự kiện 'child_added' tiếp theo sẽ chứa 'hàng' mới. – cartant
bạn có ví dụ về điều này với mã angularfire? Tôi không thể tìm thấy nó trên đó tài liệu về cách sử dụng trên ("child_added" ...) – Basit
Nó nằm trong [Firebase API] cơ bản (https://firebase.google.com/docs/reference/js/firebase.database. Tài liệu tham khảo). Bạn có thể thấy cách nó được sử dụng trong [AngularFire2 source] (https://github.com/angular/angularfire2/blob/2.0.0-beta.5/src/database/firebase_list_factory.ts#L102-L156) cho danh sách có thể quan sát được. – cartant