2017-10-09 147 views
0

我遵循有關如何編寫查詢的文檔here,但我沒有從中獲取任何數據。該數據庫已填充了由商務部如何在Firebase的Cloud Firestore中執行查詢

下面提供的例子是我的代碼

var db = firebase.firestore(); 

var citiesRef = db.collection("cities"); 
var query = citiesRef.where("state", "==", "CA"); 

query.get().then(function(doc) { 
if (doc.exists) { 
    console.log("Document data:", doc.data()); 
} else { 
    console.log("No such document!"); 
} 
}).catch(function(error) { 
    console.log("Error getting document:", error); 
}); 

,如果我沒有把任何疑問它,它工作正常。例如(也由DOC):

var docRef = db.collection("cities").doc("SF"); 

docRef.get().then(function(doc) { 
    if (doc.exists) { 
     console.log("Document data:", doc.data()); 
    } else { 
     console.log("No such document!"); 
    } 
}).catch(function(error) { 
    console.log("Error getting document:", error); 
}); 

回答

2

的差額,在你的兩個要求是,在第二種情況下要檢索一個文件,它給你一個DocumentSnapshot它具有exists屬性和方法data()

在你不工作的例子中,你做了一個查詢,它給你一個QuerySnapshot,它的處理方式與DocumentSnapshot不同。您可以獲取文檔列表/文檔集合,而不是單個文檔。您可以檢查數據是否已經被使用emptysize性檢索,然後通過結果使用forEach方法或通過docs陣列打算去:

var db = firebase.firestore(); 

var citiesRef = db.collection("cities"); 
var query = citiesRef.where("state", "==", "CA"); 

query.get().then(function(results) { 
    if(results.empty) { 
    console.log("No documents found!"); 
    } else { 
    // go through all results 
    results.forEach(function (doc) { 
     console.log("Document data:", doc.data()); 
    }); 

    // or if you only want the first result you can also do something like this: 
    console.log("Document data:", results.docs[0].data()); 
    } 
}).catch(function(error) { 
    console.log("Error getting documents:", error); 
}); 
相關問題