Angularjs 带有角度错误的post:可能未处理的拒绝
我刚刚设法让我的$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: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:\
//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);
}