提问者:小点点

从Firestore获取一个文档并将其返回到变量


我使用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,但这也给了我一个错误。


共2个答案

匿名用户

您需要返回承诺链,如下所示:

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();
};

相关问题