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'
   },

工作流程应如下所示:

谢谢! :)

你可以做到,

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")});
            }
        });
    }
};