簡體   English   中英

SailsJS + AngularJS(注冊)-如何將對象從SailsJS Action返回到AngularJS

[英]SailsJS + AngularJS (registration) - How to return object from SailsJS Action to AngularJS

我正在嘗試使用angularJS實施向新用戶配置文件的重定向; 但是,成功創建用戶后,我無法將Sails Action中的用戶對象返回到angular。 結果,我沒有用戶ID才能使用angular渲染頁面。

我正在使用默認的SailsJS體系結構。

這是我在SignUpController.js中的 Angular代碼(我知道在控制器中發出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代碼。(我試圖返回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創建一個到/ signup的發布請求
  • Sails在route.js中處理此請求
  • Sails通過Sails PostgreSQL適配器創建新用戶
  • Sails將用戶對象返回給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")});
            }
        });
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM