如何从 api res.send 中检索数据?
How to retrieve data from api res.send?
我正在为我的单页应用程序使用 javascript MEAN 堆栈。
我有一个 Angular 工厂打电话给我的 Api。
app.factory('authorizing', function($resource){
return $resource(
'/api/authorizing/:username',
{'username':'@username'},
// retreiving only one user and all their roles
{'singleUser' : {
method:'GET'
,isArray: false
}}
);
});
我这样在我的控制器中调用工厂。我的目标是根据从 Api 返回的响应更新网页数据。我希望 returned 是真值或假值。我已经尝试过其他的东西,但我想在服务器端保留我的授权。
app.controller('usrPageController', function ($scope, usrServiceById, $route, authorizing, $rootScope) {
$scope.updateUser = function (data,field){
var vCheckUserRoles;
vCheckUserRoles = authorizing.singleUser({'username': $rootScope.current_user});
if (vCheckUserRoles == true){
usrServiceById.update({'username':username},{field:data, 'fieldName':field});
};
};
});
数据库return使用res.send的结果数据。
.get(function (req, res) {
RoleUser.find({ 'aclUserName': req.params.username }, function (err, aclUser) {
if (err) { return res.sendStatus(500) };
// return an error if no user is found
if (aclUser == null) { return res.sendStatus(401) };
//check for proper role in list of users
for (var i = 0; i < aclUser.length; i++) {
if (aclUser[i].aclUserResource == req.params.username + '_PROFILE') {
//return a successful status
return res.send('true');
};
};
//return a failed status
return res.send('false');
});
});
我没有从代码中得到任何错误,但是 return 对象在 res.send 之后到达控制器时是空的。我尝试了 return 不同类型的数据,但似乎对我没有任何作用。任何帮助表示赞赏。我的 Api 中还有其他 res.send 个电话。它们可以工作,但我使用回调直接从我的数据库中获取数据并将其提供给 res.send。这是我的代码中唯一一次尝试 return 除了成功的回调变量之外的东西。
更新代码:
我删除了 var vCheckUserRoles。现在值被传递给成功回调
app.controller('usrPageController', function ($scope, usrServiceById, $route, authorizing, $rootScope) {
authorizing.singleUser({'username': $rootScope.current_user},function(response){
console.log('response = ' + response.data)
if (response.data == 'true'){
usrServiceById.update({'username':usrSingle.username},{field:data, 'fieldName':field});
};
});
});
您可以使用 res.json 而不是 res.send 来发送查询状态。
示例 ////
res.json({status:true})
在客户端,您可以在 data.status 字段中访问该状态值。
在服务器上您发送的数据如下:
res.status(200).send({message: "Hello!"});
在front-end中收到数据,然后解析得到数据如下:
fetch(url)
.then(response => {
if(response.ok) {
return response.json();
}
}).then(data => {
if(data) {
console.log(data);
}
}).catch(err => console.error(err));
我正在为我的单页应用程序使用 javascript MEAN 堆栈。
我有一个 Angular 工厂打电话给我的 Api。
app.factory('authorizing', function($resource){
return $resource(
'/api/authorizing/:username',
{'username':'@username'},
// retreiving only one user and all their roles
{'singleUser' : {
method:'GET'
,isArray: false
}}
);
});
我这样在我的控制器中调用工厂。我的目标是根据从 Api 返回的响应更新网页数据。我希望 returned 是真值或假值。我已经尝试过其他的东西,但我想在服务器端保留我的授权。
app.controller('usrPageController', function ($scope, usrServiceById, $route, authorizing, $rootScope) {
$scope.updateUser = function (data,field){
var vCheckUserRoles;
vCheckUserRoles = authorizing.singleUser({'username': $rootScope.current_user});
if (vCheckUserRoles == true){
usrServiceById.update({'username':username},{field:data, 'fieldName':field});
};
};
});
数据库return使用res.send的结果数据。
.get(function (req, res) {
RoleUser.find({ 'aclUserName': req.params.username }, function (err, aclUser) {
if (err) { return res.sendStatus(500) };
// return an error if no user is found
if (aclUser == null) { return res.sendStatus(401) };
//check for proper role in list of users
for (var i = 0; i < aclUser.length; i++) {
if (aclUser[i].aclUserResource == req.params.username + '_PROFILE') {
//return a successful status
return res.send('true');
};
};
//return a failed status
return res.send('false');
});
});
我没有从代码中得到任何错误,但是 return 对象在 res.send 之后到达控制器时是空的。我尝试了 return 不同类型的数据,但似乎对我没有任何作用。任何帮助表示赞赏。我的 Api 中还有其他 res.send 个电话。它们可以工作,但我使用回调直接从我的数据库中获取数据并将其提供给 res.send。这是我的代码中唯一一次尝试 return 除了成功的回调变量之外的东西。
更新代码:
我删除了 var vCheckUserRoles。现在值被传递给成功回调
app.controller('usrPageController', function ($scope, usrServiceById, $route, authorizing, $rootScope) {
authorizing.singleUser({'username': $rootScope.current_user},function(response){
console.log('response = ' + response.data)
if (response.data == 'true'){
usrServiceById.update({'username':usrSingle.username},{field:data, 'fieldName':field});
};
});
});
您可以使用 res.json 而不是 res.send 来发送查询状态。
示例 //// res.json({status:true})
在客户端,您可以在 data.status 字段中访问该状态值。
在服务器上您发送的数据如下:
res.status(200).send({message: "Hello!"});
在front-end中收到数据,然后解析得到数据如下:
fetch(url)
.then(response => {
if(response.ok) {
return response.json();
}
}).then(data => {
if(data) {
console.log(data);
}
}).catch(err => console.error(err));