我对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
来查看查询的输出。但是我无法将其分配给变量。
我已经阅读了Promises,并且看到它必须解决某些问题。我试图用我想返回的数据调用resolve
,但这给了我一个错误。
答案 0 :(得分:2)
我建议您使用异步/等待语法
let findUserByContact = async (contact) => {
let querySnapshot = await usersRef.where('contact', '==', contact).get();
if (querySnapshot.empty) return false;
return querySnapshot.docs[0].data();
};
答案 1 :(得分:1)
您需要返回promise chain,如下所示:
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使其更易于阅读。