[英]How to compare EditText value with array value stored in firestore?
addaddress.setOnClickListener {
val pincoder = zipcode.text.toString().trim()
val pinCodeList = listOf("201014", "201301")
val productsRef = FirebaseFirestore.getInstance().collection("Pincode")
.document("zipcollect").collection("zipcodes")
productsRef.whereArrayContainsAny("pin_code", pinCodeList).get().addOnCompleteListener {
if (pincoder.equals(it.isSuccessful.toString()) == 0)
{
for (document in it.result!!) {
Log.d(TAG, document.id + " => " + document.data)
Toast.makeText(this,"We Deliver Here!", Toast.LENGTH_SHORT).show()
}
}
else {
Toast.makeText(this,"We Don't Deliver Here!", Toast.LENGTH_SHORT).show()
}
}
這是存儲在 firestore 中的數據的屏幕截圖
你不能告訴 Firestore,嘿,Firestore 會返回所有文件,其中pin_code
數組包含pinCodeList
的所有元素。
要解決此問題,您可以考慮使用 Map 而不是數組。 您的文檔應如下所示:"
pin_codes
|
--- code_one: 201014
|
--- code_two: 303007
|
--- code_three: 201301
然后對每個代碼執行單獨的查詢,如下所示:
val firstCodeQuery = productsRef.whereIn("pin_codes.code_one", Arrays.asList("201014", "201301"))
val firstTask = firstCodeQuery.get()
對第二個和第三個查詢執行相同的操作。 如果List中的值之一在Map中不存在,在Map中不存在,則停止查詢。 如果都存在,只需使用我在以下帖子中的回答在客戶端上收集結果:
或者,您可以對列表中的每個元素執行whereArrayContains操作。
whereArrayContainsAny可以對文檔的集合和返回列表執行,並且您正在嘗試獲取字段。
數組包含任何
使用 array-contains-any 運算符將同一字段上的最多 10 個 array-contains 子句與邏輯或組合起來。 array-contains-any 查詢返回給定字段是包含一個或多個比較值的數組的文檔:
您可以在此處閱讀有關array-contains-any的更多詳細信息 您可以像這樣執行您的操作
val pincoder = zipcode.text.toString().trim()
FirebaseFirestore.getInstance()
.collection("Pincode")
.document("zipcollect")
.collection("zipcodes")
.document("Am0U....<Fill your doc ref>").get()
.addOnCompleteListener {
it.let {
if (it.isSuccessful && it.result != null) {
val pinCodeList = it.result["pin_code"] as List<String>
if(pinCodeList.contains(pincoder)){
Toast.makeText(this,"We Deliver Here!", Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(this,"We Don't Deliver Here!", Toast.LENGTH_SHORT).show()
}
}
}
}
.addOnFailureListener {
AppLog.e("===========", "Data fail " + it)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.