我試圖驗證我是否已經添加了一本同名的書和一個年級(課程),我不是100%確定&&在REACT中是否可以作為AND使用,但我認為它可以,因為在代碼中沒有得到任何投訴,無論如何,繼續討論這個問題:
const register=(e)=> {
e.preventDefault()。
const docRef = db.collection('libros').doc()。
docRef.get().then((doc) => /span> {
if (doc.id.descripcion == descripcion & & doc. id.grado == grado)
{
window.alert("Book exist already"/span>)
}
else {
docRef.set({
materia: materia,
descripcion: descripcion,
editorial: 編輯。
grado: 等級。
precio: 價錢。
id: docRef.id。
}).then((r) =>/span> {
window.alert("Book added"/span>)
})}
})
}
這是我遇到問題的部分代碼,我的想法是回圈瀏覽該集合中的所有檔案,我不確定我的寫法是否正確(顯然不是,因為沒有作業)。
我的想法是,檔案有一個叫做描述和課程(descripcion and grado)的欄位,我想首先比較檔案,檢查它們是否有相同的描述和課程,比如它們可以有相同的描述但沒有相同的等級,或者有相同的等級但沒有相同的描述
。(我認為我的邏輯是正確的):doc.id.descripcion == descripcion && doc.id.grado == grado
但它似乎甚至沒有運行該代碼,歡迎任何提示,根據我的理解,應該是回圈并檢查每個檔案。
uj5u.com熱心網友回復:
這將永遠不會發現任何重復的內容:
const docRef = db. collection('libros').doc()。
docRef.get().then((doc) => /span> {
if (doc.id.descripcion == descripcion & & doc. id.grado == grado) {
window.alert("Book exist already"/span>)
}
...
原因是第一行創建了一個對新檔案的參考。然后下一行試圖加載該檔案,這將不會給你任何資料。
doc.id.descripcion和doc.id.grado也是錯誤的,可能應該是doc.data().descripcion和doc.data().grado。但這并不重要,因為無論如何你都不會從get()中得到一個檔案,因為你正試圖從一個你剛剛創建但從未寫入的參考中加載一個檔案。
為了確保某些東西在Firestore中是唯一的,可以把它作為檔案的ID。因此,如果你希望書名和年級是唯一的,就從書名和年級中創建檔案的ID,而不是要求Firestore為你生成一個唯一的ID:"
如果你希望書名和年級是唯一的,就從書名和年級中創建檔案的ID。
const docId = descripcion grado;
const docRef = db.collection('libros').doc(docId)。
docRef.get().then((doc) => {
if (doc.exists) {
window.alert("Book exist already"/span>)
}
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/327368.html
標籤:

