0

我是 firebase admin SDK 的新手,并试图让它在我的 angularjs 应用程序上运行,使用并遵循此处此处的步骤:

我已经正确设置了我的 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了控制台。请帮助我在我的应用程序中取回信息。谢谢

4

1 回答 1

1

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

  1. 在您的 Angular 代码中,您向/.fb端点发出请求,但在您的服务器代码中,您是/.firebase-user端点上的侦听器。我假设您希望它们都相同。
  2. 您的服务器代码实际上从未向 Angular 代码发送响应。我很惊讶你的then()完成处理程序实际上已经完成了。您应该需要res.status(200).send(userRecord.toJSON())在成功案例和res.status(400).send({ error: error })错误案例中显式发送响应。
  3. 你应该在catch()你的 Angular 代码中添加一个,以确保你能捕捉到服务器代码发出的任何错误或失败的请求。
于 2017-01-25T19:23:13.493 回答