Node.js 如何以json格式从firestore返回数据?

Node.js 如何以json格式从firestore返回数据?,node.js,google-cloud-firestore,Node.js,Google Cloud Firestore,我正在尝试创建一个函数(在服务器端)来从firestore返回数据 但它总是返回未定义的我 我试图在返回它之前显示它,我可以在终端中看到值 exports.get_client = (ref)=> { ref.collection("clients/").get().then(function(coll) { let a= [] coll.forEach(element => { a.push({"User"

我正在尝试创建一个函数(在服务器端)来从firestore返回数据 但它总是返回未定义的我

我试图在返回它之前显示它,我可以在终端中看到值

exports.get_client = (ref)=> {
    ref.collection("clients/").get().then(function(coll) {
        let a= []
            coll.forEach(element => {
              a.push({"User": element.id, "data": element.data()})
              return a
            })
    }).catch(function(error) {
        console.log("Error getting document:", error);
    });
}
我期望[{用户:'test@test.com', 数据: {电子邮件:'test@test.com', 家族名称:“test2”, 名字:'test'}}]
但是我没有定义。

您的
返回一行
刚刚从传递给
forEach
的lambda函数返回。它实际上没有从函数
get\u client
返回任何内容。如果要从
get\u client
返回值,则必须在lambda之外执行该操作

exports.get_client = (ref)=> {
    return ref.collection("clients/").get().then(function(coll) {
        let a= []
        coll.forEach(element => {
            a.push({"User": element.id, "data": element.data()})
        })
        return a
    }).catch(function(error) {
        console.log("Error getting document:", error);
    });
}

您的
返回一行
刚刚从传递给
forEach
的lambda函数返回。它实际上没有从函数
get\u client
返回任何内容。如果要从
get\u client
返回值,则必须在lambda之外执行该操作

exports.get_client = (ref)=> {
    return ref.collection("clients/").get().then(function(coll) {
        let a= []
        coll.forEach(element => {
            a.push({"User": element.id, "data": element.data()})
        })
        return a
    }).catch(function(error) {
        console.log("Error getting document:", error);
    });
}

我尝试了这个,但是我得到了相同的结果,未定义。我编辑了代码。它缺少由
catch
返回的承诺的返回。客户端将需要使用此承诺在其可用时获取最终值。我尝试了此操作,但得到了相同的结果,未定义。我编辑了代码。它缺少由
catch
返回的承诺的返回。客户将需要使用此承诺,以在其可用时获得最终价值。