2017-10-07 22 views
9

Có thể lưu trữ nhiều tài liệu trong Firestore chỉ với một yêu cầu không? Với vòng lặp này có thể nhưng điều này sẽ gây ra một hoạt động tiết kiệm cho mỗi mục trong danh sách.Cách tạo/cập nhật nhiều tài liệu cùng một lúc trong Firestore

for (counter in counters) { 
    val counterDocRef = FirebaseFirestore.getInstance() 
      .document("users/${auth.currentUser!!.uid}/lists/${listId}/counters/${counter.id}") 
    val counterData = mapOf(
      "name" to counter.name, 
      "score" to counter.score, 
    ) 
    counterDocRef.set(counterData) 
} 

Trả lời

15

Từ tài liệu căn cứ hỏa lực:

Bạn cũng có thể thực hiện nhiều hoạt động như một lô duy nhất, với bất kỳ sự kết hợp của set(), cập nhật(), hoặc xóa() phương pháp. Bạn có thể ghi hàng loạt trên nhiều tài liệu, và tất cả các hoạt động trong lô hoàn thành nguyên tử.

// Get a new write batch 
WriteBatch batch = db.batch(); 

// Set the value of 'NYC' 
DocumentReference nycRef = db.collection("cities").document("NYC"); 
batch.set(nycRef, new City()); 

// Update the population of 'SF' 
DocumentReference sfRef = db.collection("cities").document("SF"); 
batch.update(sfRef, "population", 1000000L); 

// Delete the city 'LA' 
DocumentReference laRef = db.collection("cities").document("LA"); 
batch.delete(laRef); 

// Commit the batch 
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     // ... 
    } 
}); 

Firestore multiple write operations

Hy vọng nó giúp ..

+0

Vâng, đó là chính xác những gì tôi đang tìm kiếm và không may bị mất trong tài liệu. –

+1

Có cách nào để đọc hàng loạt, tương tự như khả năng viết này, tức là nếu tôi có 10 tài liệu tham khảo tài liệu tôi có thể nhận hàng loạt không? Cảm ơn! – Shaun

+0

@MarcelBochtler Không có đề cập trong tài liệu hướng dẫn rằng một hoạt động hàng loạt được lập hóa đơn dưới dạng một lần đọc. Batching là một cách để thực hiện các hoạt động một cách nguyên tử (tất cả cùng một lúc hoặc không hoàn toàn), nhưng nó khác với thanh toán. Trang thanh toán mà tôi trích dẫn trong câu trả lời của tôi cho thấy rằng "Bạn bị tính phí cho mỗi tài liệu đọc, viết và xóa mà bạn thực hiện với Cloud Firestore". –

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