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