Một giải pháp khi bạn sử dụng căn cứ hỏa lực Auth cùng với FireStore
Kiến trúc thư mục gốc của cơ sở dữ liệu FireStore sẽ trông như thế này
Sử dụng Firebase Auth currentUser.uid
để tạo tài liệu gốc cho từng người dùng. Bắt đầu bằng cách thêm một trường được gọi là registered_at
vào tài liệu gốc ngay sau khi người dùng được tạo lần đầu tiên và sau đó thêm các bộ sưu tập cụ thể vào tài liệu gốc của bạn tùy thuộc vào trường hợp sử dụng của bạn.
Khi đăng nhập hoặc đăng nhập, bạn có thể kiểm tra xem tài liệu có trường registered_at
đã tồn tại chưa. Nếu nó chưa hề tồn tại, sau đó bạn có thể đối xử với người sử dụng như một người dùng mới (giả sử người dùng không thể xóa hoặc thay đổi lĩnh vực registered_at
sau)
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.DocumentReference
import com.google.firebase.firestore.FirebaseFirestore
fun rootDocument(): DocumentReference? = rootPath()?.let {
return fireStore().document(it)
}
fun rootPath(): String? {
val loggedInUser = loggedInUser()
if (loggedInUser != null) {
return "users/${loggedInUser.uid}"
}
return null
}
fun fireStore() = FirebaseFirestore.getInstance()
fun createWriteBatch() = fireStore().batch()
fun loggedInUser() = fireAuth().currentUser
fun fireAuth(): FirebaseAuth = FirebaseAuth.getInstance()
fun afterSignIn() {
val rootDocument = rootDocument()
?: throw IllegalStateException("root document not found")
rootDocument.get().addOnCompleteListener {
val isNewUser = it.result.exists().not()
if (isNewUser) {
val batch = createWriteBatch()
batch.set(rootDocument, HashMap<Any, Any>().apply {
put("registered_at", System.currentTimeMillis())
})
batch.commit().addOnCompleteListener {
println("this is a new user")
}
} else {
println("this is not a new user")
}
}
}
Vì vậy, bạn muốn sử dụng lấy một danh sách tất cả người dùng sử dụng căn cứ hỏa lực Auth? –
vâng, đó chính là điều tôi đang tìm kiếm – rainman
Rất tiếc, bạn không thể sử dụng Autbase Firebase theo cách đó. Bạn sẽ phải làm theo những gì @NarenderReddy nói - mỗi lần người dùng đăng nhập lần đầu tiên bạn sẽ cần phải lưu trữ một số loại mục nhập bằng cách sử dụng Cơ sở dữ liệu Firebase (hoặc phương pháp lưu trữ ưa thích của bạn) cùng với thông tin bạn muốn theo dõi. Sau đó, bạn có thể sử dụng vị trí cơ sở dữ liệu đó để có danh sách tất cả người dùng. –