我使用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
时,它总是返回未定义。
我可以使用console.log
查看查询的输出。 但是我不能把它分配给一个变量。
我读过许诺,我看到它必须解决一些问题。 我试图用我想要返回的数据调用resolve
,但这也给了我一个错误。
您需要返回承诺链,如下所示:
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使其更容易阅读。
我建议您使用async/await语法
let findUserByContact = async (contact) => {
let querySnapshot = await usersRef.where('contact', '==', contact).get();
if (querySnapshot.empty) return false;
return querySnapshot.docs[0].data();
};