'firebase.firestore().collection().where(_, _, *) 'value' 不是有效的過濾器。'not-in' 過濾器支援值數組中最多包含 10 個元素。”
P粉833546953
2023-09-04 22:44:17
<p>firebase.firestore().collection().where(_, _, *)「值」無效。 “not-in”過濾器支援值數組中最多包含 10 個元素。 </p>
<pre class="brush:php;toolbar:false;">unlanguages = firestore()
.collection("users")
--> .where("id", "not-in", [...passedUserIds, ...smashesUserIds])
.onSnapshot(async querySnapshot => {
if (querySnapshot?.docs?.length > 0) {
let dondur2 = await querySnapshot?.docs
.filter((doc) => doc.id != user.uid)
.filter((doc) => doc._data.gender != loggedInProfile.gender)
.filter((doc) => doc._data.age <= `${value[1]}`)
.filter((doc) => doc._data.age >= `${value[0]}`)
.filter((doc) =>
doc._data.languages[0] == languages ||
doc._data.languages[1] == languages ||
doc._data.languages[2] == languages ||
doc._data.languages[3] == languages ||
doc._data.languages[4] == languages ||
doc._data.languages[5] == languages ||
doc._data.languages[6] == languages ||
doc._data.languages[7] == languages
)
.map((doc) => ({ id: doc.id, ...doc.data() }))
setProfiles(dondur2)
}
})</pre>
<p>所以在這裡出現了一個問題,'ids'超過了10個,我該如何解決?我查看了其他的問題,但對我沒有用。 </p>
這句話的翻譯如下:
你很可能在
[...passedUserIds, ...smashesUserIds]
陣列中有超過10個元素。這是Firestore的限制。 繞過這個限制的唯一方法是要調整你的資料模型,要嘛找到一種減少數組中元素數量的方法。如果沒有看到你的數據的真實範例,很難給出進一步的建議。