繁体   English   中英

undefined不是对象(评估'storeDataFactory.createUser(user).then

[英]undefined is not an object (evaluating 'storeDataFactory.createUser(user).then

该函数运行,console.log在后端显示用户对象。 我不明白为什么它告诉我这里有一个问题,真的需要一些指导。

vm.register = function() {
    //check that passwords match
  if(vm.password != vm.passwordRepeat) {
    vm.registerError = "Passwords must match.";
    return;
  } else {
    var username = vm.username;
    // console.log("Valid form.  Checking for existing user",username);
    storeDataFactory.userExists(username).then(function(response){
      //if user exists, return error
      if(response.data.length > 0) {
        vm.registerError = "A user with email " + username + " already exists.  Please login.";
        return;
      } else {
        //if no user exists
        if(response.data.length == 0) {
          // console.log("No user exists.  Continue with registration.");
        }
        //assign info to user object
          var user = {
          username: vm.username,
          password: vm.password,
          name: vm.name,
          phone: vm.phone
        };
        **storeDataFactory.createUser(user).then(function(response){**
          vm.user = response.data;
          console.log("Created user", vm.user);
          if(response.data.length > 0) {
            console.log("Created user", vm.user);
            vm.registerMessage = "Successful registration, please login";
            vm.registerError = null;
            vm.user = response.data;  
          }
        }).catch(function(error){
            console.log(error);
            vm.registerError = "There was an error creating your account.";
            vm.registerMessage = null;
            });  
      }
    });
  }

};

后端代码:

    module.exports.register = function(req, res) {
  console.log('registering user', req.body);
  //create the user object with hashed pass
  User
    .create({
    username: req.body.username,
    name: req.body.name,
    phone: req.body.phone,
    password: bcrypt.hashSync(req.body.password, bcrypt.genSaltSync(10))
  }, function(err, user) {
      if (err) {
        console.log("Error creating account");
        res
          .status(400)
          .json(err);
      } else {
        console.log("Account created!", user);
        res
          .status(201)
          .json(user);
      }
    });
};

帐户已创建! 和用户对象都记录在后端。 它只是不会显示该死的成功注册! 请登录。 信息。

storeDataFactory代码:

/* global angular */ angular.module('rumbleApp').factory('storeDataFactory', storeDataFactory);

function storeDataFactory($http) {
    return { 
        userExists: userExists,
        createUser: createUser
    };
    function userExists(username) {
        return $http.get('/api/users/userExists/' + username).then(complete).catch(failed);
    }
    function createUser(user) {
        $http.post('/api/users/register', user).then(complete).catch(failed);
    }

    function complete(response) {
        return response;
    }

    function failed(error) {
        console.log(error.statusText);
        return "There was an error with the API call.";
    }

}

您确定要从storeDataFactory.createUser()返回吗? 您可以发布该方法的代码吗?

听起来好像代码正在执行,但是您没有从中返回任何内容(因此为什么认为它未定义)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM