Angularjs 带有角度错误的post:可能未处理的拒绝

Angularjs 带有角度错误的post:可能未处理的拒绝,angularjs,node.js,mongodb,express,put,Angularjs,Node.js,Mongodb,Express,Put,我刚刚设法让我的$http帖子在Angular.com上运行,其中管理员只能对数据进行编辑,例如授予用户成为管理员或阻止用户的权限,并更新用户的描述。我写下我学到的每一件事,但当我在命令提示符下发布数据时,它会给我以下错误: 错误: {密码: {MongooseError:密码应包含#$@!大小写,并且应介于6到8个字符之间 at validator错误(C:\jobapp\node\u modules\mongoose\lib\error\validator.js:24:11) 验证时(C:\

我刚刚设法让我的$http帖子在Angular.com上运行,其中管理员只能对数据进行编辑,例如授予用户成为管理员或阻止用户的权限,并更新用户的描述。我写下我学到的每一件事,但当我在命令提示符下发布数据时,它会给我以下错误:

错误: {密码: {MongooseError:密码应包含#$@!大小写,并且应介于6到8个字符之间 at validator错误(C:\jobapp\node\u modules\mongoose\lib\error\validator.js:24:11) 验证时(C:\jobapp\node\u modules\mongoose\lib\schematype.js:732:13) 位于C:\jobapp\node\u modules\mongoose\lib\schematype.js:802:5 在model.validator(C:\jobapp\node\u modules\mongoose validator\lib\mongoose validator.js:55:16) 异步验证时(C:\jobapp\node\u modules\mongoose\lib\schematype.js:791:29) 不推荐使用时(内部/util.js:41:15) 在C:\jobapp\node\u modules\mongoose\lib\schematype.js:760:9 at Array.forEach(本机) 在SchemaString.SchemaType.doValidate(C:\jobapp\node\u modules\mongoose\lib\SchemaType.js:738:19) 在C:\jobapp\node\u modules\mongoose\lib\document.js:1479:9 at _combinedTickCallback(内部/流程/下一步_tick.js:73:7) 在进程中。_tick回调(内部/process/next_tick.js:104:9) 消息:“密码应包含#$@!大小写,并且应在6到8个字符之间”,名称:“ValidatorError”, 属性:[对象], 种类:'用户定义', 路径:“密码”, 价值:‘$2a$10$cNJ6jAYs8bLZy5qE4RSMoeKbvz1PFZPRkK8T1ODxnD5QNRFxCrH5K’, 原因:未定义}}, 消息:“用户验证失败”, 名称:'ValidationError'} {MongooseError:用户验证失败 在ValidationError}

当我刷新页面时,我在控制台中遇到了以下错误:

angular.js:14525可能未经处理的拒绝:{“数据”:null,“状态”:-1,“配置”:{“方法”:“PUT”,“transformRequest”:[null],“transformResponse”:[null],“jsonpCallbackParam”:“回调”,“url”:“/sign/edit/”,“数据”:{“\u id”:“590470c0d9f3c1187002431c”,“aboutme”:“dsdjksjkdjk”,“标头”:{“接受”:“应用程序/json,文本/plain,/”,“内容类型”:“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'});
    }
    }
    }
    });

    });
在控制器中(这是我的角度post调用:)

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>

我在这些错误中坚持了两天多,所以有人知道为什么会发生这种情况吗?我必须做什么?我肯定有错误,但我不知道-1的状态在哪里通常表示CORS问题。浏览器因为违规而阻止了请求,服务器无法授权。@georgeawg感谢它帮助我解决了这个问题o解决此问题//如果密码未更改或是新的,则忽略中间件如果(!user.isModified('password'))返回下一步();//如果密码未更改或是新的,则忽略中间件会导致密码在每次编辑过程中都在更改,并且可能超过passeord验证的长度
<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);
        }