SailsJS + AngularJS(注册)- 如何从 SailsJS 操作 return 对象到 AngularJS
SailsJS + AngularJS (registration) - How to return object from SailsJS Action to AngularJS
我正在尝试使用 angularJS 实现到新用户配置文件的重定向;但是,在成功创建用户后,我无法将 return 用户对象从 Sails Action 更改为 angular。因此,我没有用户 ID 无法使用 angular 呈现页面。
我正在使用默认的 SailsJS 架构。
这是我在 Angular 中的代码 SignUpController.js(我知道这不是最好的主意在控制器中发出 http 请求)
angular.module('SignupModule').controller('SignupController', function ($scope, $http, $location) {
$scope.submitSignupForm = function (){
console.log("clicked");
$scope.successMessage = false;
$scope.errorMesaage = false;
$http.post('/signup', {
name: $scope.signupForm.name,
pass: $scope.signupForm.pass
}).then (function onSuccess(res){
$scope.successMessage = true;
// render the profile of a new user
// did not get user object from sails
// res object return status of request but not user object
}).catch(function onError(res){
$scope.errorMesaage = true;
})
}
});
这是我在 UserController.js 中的 SailsJS 代码。(我试图 return res.send() 和 res.json() 但它不起作用。)
module.exports = {
//create new user
create: function (req, res, next) {
//check if user exists
User.findOne({name: req.param('name')}).exec(function findOneCB(err, found){
if(err) return next(err);
//if user does not exist create one; otherwise exit
if(!found){
User.create (req.params.all(), function userCreated(err, user){
if(err) return next(err);
/* return user object to angular */
//return res.send(user);
//return res.json(user);
});
} else {
return next();
}
});
}
};
这里是config/routes.js
'GET /signup': {
view: 'signup'
},
'POST /signup': {
controller: 'UserController',
action: 'create'
},
工作流程应如下所示:
- 用户点击了提交按钮
- submitSignupForm 创建一个 post 请求到 '/signup'
- Sails 在 routes.js
中处理此请求
- Sails 通过 Sails PostgreSQL 适配器创建新用户
- 将 return 用户对象发送到 AngularJS !!! - 不起作用
- AngularJS 使用 user.id 呈现用户个人资料页面! - 不起作用
谢谢! :)
你可以做到,
module.exports = {
create: function (req, res) {
User.findOne({name: req.param('name')}).exec(function findOneCB(err, found) {
if (err) return res.negotiate(err);
if (!found) {
User.create(req.params.all(), function userCreated(err, user) {
if (err) res.negotiate({error:err});
return res.ok(user);
});
} else {
return res.negotiate({error:new Error("USER_EXIST")});
}
});
}
};
我正在尝试使用 angularJS 实现到新用户配置文件的重定向;但是,在成功创建用户后,我无法将 return 用户对象从 Sails Action 更改为 angular。因此,我没有用户 ID 无法使用 angular 呈现页面。
我正在使用默认的 SailsJS 架构。
这是我在 Angular 中的代码 SignUpController.js(我知道这不是最好的主意在控制器中发出 http 请求)
angular.module('SignupModule').controller('SignupController', function ($scope, $http, $location) {
$scope.submitSignupForm = function (){
console.log("clicked");
$scope.successMessage = false;
$scope.errorMesaage = false;
$http.post('/signup', {
name: $scope.signupForm.name,
pass: $scope.signupForm.pass
}).then (function onSuccess(res){
$scope.successMessage = true;
// render the profile of a new user
// did not get user object from sails
// res object return status of request but not user object
}).catch(function onError(res){
$scope.errorMesaage = true;
})
}
});
这是我在 UserController.js 中的 SailsJS 代码。(我试图 return res.send() 和 res.json() 但它不起作用。)
module.exports = {
//create new user
create: function (req, res, next) {
//check if user exists
User.findOne({name: req.param('name')}).exec(function findOneCB(err, found){
if(err) return next(err);
//if user does not exist create one; otherwise exit
if(!found){
User.create (req.params.all(), function userCreated(err, user){
if(err) return next(err);
/* return user object to angular */
//return res.send(user);
//return res.json(user);
});
} else {
return next();
}
});
}
};
这里是config/routes.js
'GET /signup': {
view: 'signup'
},
'POST /signup': {
controller: 'UserController',
action: 'create'
},
工作流程应如下所示:
- 用户点击了提交按钮
- submitSignupForm 创建一个 post 请求到 '/signup'
- Sails 在 routes.js 中处理此请求
- Sails 通过 Sails PostgreSQL 适配器创建新用户
- 将 return 用户对象发送到 AngularJS !!! - 不起作用
- AngularJS 使用 user.id 呈现用户个人资料页面! - 不起作用
谢谢! :)
你可以做到,
module.exports = {
create: function (req, res) {
User.findOne({name: req.param('name')}).exec(function findOneCB(err, found) {
if (err) return res.negotiate(err);
if (!found) {
User.create(req.params.all(), function userCreated(err, user) {
if (err) res.negotiate({error:err});
return res.ok(user);
});
} else {
return res.negotiate({error:new Error("USER_EXIST")});
}
});
}
};