[英]Get one document from Firestore and return it to a variable
我對 NodeJS 的經驗較少,但我正在嘗試從 Firestore 獲取一份用戶文檔。
const fs = firebase.firestore();
const usersRef = fs.collection('users');
let findUserByContact = (contact) => {
let res = usersRef.where('contact', '==', contact).get().then(querySnapshot => {
if (!querySnapshot.empty) {
return querySnapshot.docs[0].data();
} else {
return false;
}
});
};
我正在嘗試返回找到的第一個文檔。 但是,當我調用findUserByContact
時,它總是會返回 undefined 。
我可以使用console.log
查看查詢的 output。 但我無法將其分配給變量。
我已經閱讀了 Promises,我看到它必須解決一些問題。 我試圖用我想要返回的數據調用resolve
,但這也給了我一個錯誤。
我建議您使用 async/await 語法
let findUserByContact = async (contact) => {
let querySnapshot = await usersRef.where('contact', '==', contact).get();
if (querySnapshot.empty) return false;
return querySnapshot.docs[0].data();
};
您需要返回promise 鏈,如下:
let findUserByContact = (contact) => {
return usersRef.where('contact', '==', contact).get()
.then(querySnapshot => {
if (!querySnapshot.empty) {
return querySnapshot.docs[0].data();
} else {
return false;
}
});
};
請注意,@AkashDathan 的答案也完全有效,並且使用 async/await 使其更易於閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.