angularjs 通过 $http 快速取回数据 post

angularjs express get data back via $http post

我是 firebase admin SDK 的新手,正在尝试让它在我的 angularjs 应用程序上运行,使用并遵循以下步骤 here and this here

我已经正确设置了我的 firebase admin SDK 并在我的节点服务器上的 server.js 文件中像这样初始化它:

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
app.post('/.firebase-user', function (req, res, nex) {
    admin.auth().getUser(req.body.uid)
        .then(function (userRecord) {
            // See the tables below for the contents of userRecord
            console.log("Successfully fetched user data:", userRecord.toJSON());
        })
             res.status(200).send({data: userRecord.toJSON()});
             return nex();
        .catch(function (error) {
            console.log("Error fetching user data:", error);
            res.status(117);
            return nex();
        });
});


现在我想在我的控制器中访问 userRecord.toJSON()

$http.post('/.firebase-user', {uid: firebase.auth().currentUser.uid})
        .then(function(response) {
            console.log($scope.data, response.userRecord);
        });


但它没有打印 userRecord.toJSON(),而是在控制台中得到 true undefined。 请帮助我在我的应用程序中取回信息。谢谢

您的 (Express) 应用请求处理程序似乎存在一些问题:

  1. 在您的 Angular 代码中,您向 /.fb 端点发出请求,但在您的服务器代码中,您是 /.firebase-user 端点的侦听器。我假设您希望它们都相同。
  2. 您的服务器代码实际上从未向 Angular 代码发送响应。我很惊讶你的 then() 完成处理程序实际上已经完成了。您应该需要在成功情况下明确发送类似 res.status(200).send(userRecord.toJSON()) 的响应,在错误情况下发送 res.status(400).send({ error: error }) 等内容。
  3. 您应该将 catch() 添加到您的 Angular 代码,以确保您捕获服务器代码发出的任何错误或失败请求。