2017-12-16 2 views
0

안녕하세요 제발 도와주세요. 코드를 풀어줍니다. userSchema와 사용자 이름 및 암호가 고유합니다. MongoDB 데이터에 중복 데이터를 입력하면 성공적으로 저장됩니다. MongoDB에 중복 데이터를 넣을 때 오류가 발생합니다.mongoose를 저장하는 동안 오류가 발생합니다. mongodb에 데이터를 입력하십시오.

//UserSchema 

var userSchema =mongoose.Schema({ 
    user:{type:String,require:true,unique:true}, 
    pass:{type:String,require:true,unique:true} 
}) 


router.post('/users',function(req,res){  
    var newUser = new Item.user({ 
     user:req.body.username, 
     pass:req.body.password 
    });   
    if(req.body.username ==null || req.body.username=='' || req.body.password ==null || req.body.password==''){    
     res.json({success : false, message : 'Ensure username ,email and password provided'}); 
    }else{ 
     newUser.save(function(err){ 
      console.log('save errror ',err); 
      if(err){      
       res.json({success : false , message :'user already exist' }); 
      } 
      else{      
       res.json({success :true , message : 'successfully saved'}); 
      } 
     }); 

    }  
}); 

답변

1

다음은 원하는 작업을 수행하는 최소한의 코드 예제입니다. 오류가 어떻게 처리되는지보십시오. 따라서 중복 키 오류를 다른 오류와 구분할 수 있습니다.

예전에는 express, body-parsermongoose을 사용했습니다. 또한 귀하의 코드를 약간 리팩터링했습니다. 희망이 도움이됩니다.

const express = require('express'); 
 
const mongoose = require('mongoose'); 
 
const bodyParser = require('body-parser'); 
 

 
mongoose.connect('mongodb://localhost/my_database'); 
 

 
const UserSchema = mongoose.Schema({ 
 
    user: {type: String, require: true, unique: true}, 
 
    pass: {type: String, require: true, unique: true} 
 
}); 
 

 
const User = mongoose.model('User', UserSchema); 
 

 
const app = express(); 
 
app.use(bodyParser.json()); 
 

 
app.post('/users', function (req, res) { 
 
    if (!req.body.username || !req.body.password) { 
 
     res.json({success: false, message: 'Ensure username, email and password provided'}); 
 
     return; 
 
    } 
 

 
    const newUser = new User({ 
 
     user: req.body.username, 
 
     pass: req.body.password 
 
    }); 
 

 
    newUser.save(function (err) { 
 
     if (err) { 
 
      console.log('save errror ', err); 
 

 
      if (err.name === 'MongoError' && err.code === 11000) { 
 
       // Duplicate error happened. You can handle it separately. 
 
       res.json({success: false, message: 'user already exist'}); 
 
       return; 
 
      } 
 

 
      // Some other error happened, you might also want to handle it. 
 
      res.json({success: false, message: 'some error happened'}); 
 
      return; 
 
     } 
 

 
     res.json({success: true, message: 'successfully saved'}); 
 
    }); 
 
}); 
 

 
app.listen(8888);

+0

하지만 난 잘못을 내가 (ERR, '오류 저장') 조건을 console.log를 확인할 수있는 방법을 다음 null의 점점; –

+0

err이 null 인 경우 .save()가 성공적으로 실행되었음을 의미합니다. 이 경우 res.json ({success : true ...)이 호출됩니다. if (err) 문과 return 문을 참조하십시오. @MohammadFaisal –

+0

예 .save()가 성공적으로 실행되었지만 중복 데이터가 데이터베이스에 저장되었으므로 중복 데이터를 데이터베이스에 저장하지 않으려합니다. –

관련 문제