带有角度的帖子会出错:可能是未处理的拒绝

时间:2017-05-14 22:32:26

标签: angularjs node.js mongodb express put

我刚刚设法让我的$ http帖子在Angular上工作。管理员只能对数据进行编辑,例如允许用户管理或阻止用户并更新用户的描述。我写了我学到的所有东西,但是当我发布数据时它给出了我的错误,它在我的命令提示符中给出了这个错误:

  

错误:          {密码:             {MongooseError:密码应包含#$ @!大小写,应在6到8个字符之间                 在ValidatorError(C:\ jobapp \ node_modules \ mongoose \ lib \ error \ validator.js:24:11)                 在validate(C:\ jobapp \ node_modules \ mongoose \ lib \ schematype.js:732:13)                 在C:\ jobapp \ node_modules \ mongoose \ lib \ schematype.js:802:5                 在model.validator(C:\ jobapp \ node_modules \ mongoose-validator \ lib \ mongoose-validator.js:55:16)                 在asyncValidate(C:\ jobapp \ node_modules \ mongoose \ lib \ schematype.js:791:29)                 不推荐使用(内部/ util.js:41:15)                 在C:\ jobapp \ node_modules \ mongoose \ lib \ schematype.js:760:9                 at Array.forEach(native)                 在SchemaString.SchemaType.doValidate(C:\ jobapp \ node_modules \ mongoose \ lib \ schematype.js:738:19)                 在C:\ jobapp \ node_modules \ mongoose \ lib \ document.js:1479:9                 at _combinedTickCallback(internal / process / next_tick.js:73:7)                 at process._tickCallback(internal / process / next_tick.js:104:9)               消息:'密码应包含#$ @!大写和小写,应该在6到8个字符之间,名称:'ValidatorError',               属性:[对象],               种类:'用户定义',               路径:'密码',               价值:'$ 2a $ 10 $ cNJ6jAYs8bLZy5qE4RSMoeKbvz1PFZPRkK8T1ODxnD5QNRFxCrH5K',               理由:undefined}},         消息:'用户验证失败',         名称:'ValidationError'}       {MongooseError:用户验证失败           在ValidationError}

当我刷新页面时,我在控制台中收到此错误:

  

angular.js:14525可能未处理的拒绝:{“data”:null,“status”: - 1,“config”:{“method”:“PUT”,“transformRequest”:[null],“transformResponse” :[空], “jsonpCallbackParam”: “回调”, “URL”: “/符号/编辑/”, “数据”:{ “_ ID”: “590470c0d9f3c1187002431c”, “aboutme”: “dsdjksjkdjk”}, “报头” :{“接受”:“application / json,text / plain, / ”,“Content-Type”:“application / json; charset = utf-8”,“x-access-token”

我的服务器中的代码在Express.js中调用我的MongoDB:

    //insert new value
    rout.put('/edit', function(req, res){
        var editUser = req.body._id;
        if(req.body.permission) var newPermission = req.body.permission;
        if(req.body.block) var newBlock = req.body.block;
        if(req.body.aboutme) var newAbout = req.body.aboutme;
        User.findOne({username: req.decoded.username},function(err,mainUser){
    if(err) throw err;
    if(!mainUser){
    res.json({success:false, message: 'no User found'});
    }else{
        if(newAbout){
            if(mainUser.permission === 'admin'){
                User.findOne({_id: editUser},function(err, user){
                    if(!user){
                        res.json({success:false, message: 'Now user found'});
                    } else{
                        user.aboutme = newAbout;
                        user.save(function(err){
                    if(err){
                console.log(err);
                        } else{
                res.json({success:true, message : 'Description about user has been Update'});
                }
                    }); 

                }
            });
        }else{
            res.json({success:true, message:'Insufficient Permissions'});
        }
    }
    if(newBlock){
           if(mainUser.permission === 'admin'){
                User.findOne({_id: editUser},function(err, user){
                    if(!user){
                        res.json({success:false, message: 'Now user found'});
                    } else{
                        user.block = newBlock;
                        user.save(function(err){
                    if(err){
                console.log(err);
                        } else{
                res.json({success:true, message : 'Successfully you blocked a user'});
                }
                    }); 

                }
            });
    }else{
     res.json({success:true, message:'Insufficient Permissions'});
    }
    }
//here I used a lot if condition just to provide high security
    if(newPermission) {
    if(mainUser.permission === 'admin'){
    User.findOne({_id: editUser},function(err, user){
    if (err) throw err;
    if(!user){
        if(newPermission === 'user'){
        if(user.permission === 'admin'){
        if(mainUser.permission !== 'admin'){
          res.json({success:false, message: 'Insufficient Permissions. You must be an admin to downgrade'});
          } else{
      user.permission = newPermission;
           user.save(function(err){
          if(err){
      console.log(err);
      }else{
       res.json({success:true, message: 'Permissions have been Update'});
          }
    });
     }
      }
     if(newPermission === 'admin'){
       if (mainUser.permission === 'admin'){
            user.permission = newPermission;
                 user.save(function(err){
                      if(err){
                console.log(err);
            }
        else {
              res.json({success:true, message:'Permissions have been Update'});
            }
       });
         } else {
           res.json({success:false, message:'Insufficient Permissions have been updated!!'});
               }
       }
     }
     }
      });
    }  
     else {
        res.json({success:true, message:'Insufficient Permissions'});
    }
    }
    }
    });

    });
控制器中的

(这是我的Angular post call:)

    app.UpdateUsername = function(newAbout, valid){
app.errMsg = false;
app.disabled = true;
var userObject = {}; // Create a user object to pass to function
userObject._id = app.currentUser; // Get _id to search database

if(valid){

            userObject.aboutme = $scope.newAbout; // Set the new name to the user
            // Runs function to update the user's name
            User.adminEditUser(userObject).then(function(data) {
                // Check if able to edit the user's name
                if (data.data.success) {
                   // $scope.alert = 'alert alert-success'; // Set class for message
                    app.successMsg = data.data.message; 

                    // Set success message
                    // Function: After two seconds, clear and re-enable
                    $timeout(function() {
                        app.nameForm.aboutme.$setPristine(); // Reset name form
                        app.nameForm.aboutme.$setUntouched(); // Reset name form
                        app.successMsg = false; // Clear success message
                        app.disabled = false; // Enable form for editing
                    }, 2000);
                } else {
                    //$scope.alert = 'alert alert-danger'; // Set class for message
                    app.errorMsg = data.data.message; // Clear any error messages
                    app.disabled = false; // Enable form for editing
                }
            });;

} else{
app.errorMsg = 'Please Ensure you filled form properly';
app.disabled = false
}

}

 })

Html页面:

<form name="edit.nameForm" ng-show="edit.phase1" novalidate ng-submit="edit.UpdateUsername(newAbout, edit.nameForm.aboutme.$valid)">
<!--Username-->
<div class="col-md-12">
                        <div class="form-group">
                            <div ng-class="{ 'has-success':(edit.nameForm.aboutme.$valid && !edit.nameForm.aboutme.$pristine), 'has-error':(!edit.nameForm.aboutme.$valid && !edit.nameForm.aboutme.$pristine) || (!edit.nameForm.aboutme.$valid && edit.nameForm.$submitted) }">
                                <label class="label label-primary">About User</label>
                                <br>
                                <input ng-disabled="edit.disabled" class="form-control" type="text" id="test_id" name="aboutme" placeholder="Please Write 100 words about Youeself " ng-model="newAbout" ng-pattern="/^[A-Za-z ]+$/" ng-minlength="0" ng-maxlength="100" required/>
                                <p class="help-block" ng-show="(!edit.nameForm.aboutme.$pristine && edit.nameForm.aboutme.$error.required) || 
(edit.nameForm.$submitted && edit.nameForm.aboutme.$error.required)">This field is required</p>
                                <ul ng-show="(!edit.nameForm.aboutme.$pristine && edit.nameForm.aboutme.$error.pattern) ||
 (!edit.nameForm.aboutme.$pristine && edit.nameForm.aboutme.$error.minlength) || (!edit.nameForm.aboutme.$pristine && edit.nameForm.aboutme.$error.maxlength)" class="help-block">
                                    <li>Must not contain any numbers or special characters</li>
                                    <li>You must write 100 words no more</li>
                                </ul>
                            </div>
                        </div>
                    </div>
  <center>
  <h5><button class="btn btn-primary btn-block" type="submit">Update</button></h5></center>
  </div>

</form>

        <div class="row show-hide-message" ng-show="edit.successMsg">
            <div class="alert alert-success"> {{edit.successMsg}}</div>
        </div>
        <br>
        <div class="row show-hide-message" ng-show="edit.errorMsg">
            <div class="alert alert-danger">{{edit.errorMsg}}</div>
        </div>

是服务:

userFactory.adminEditUser = function(id) {
            return $http.put('/sign/edit/', id);
        }

超过两天我坚持这些错误所以有谁知道为什么会发生这种情况?我必须做什么?我确信有错误,但我不知道在哪里

0 个答案:

没有答案