TypeError: невозможно прочитать код свойства со значением null - PullRequest
0 голосов
/ 06 мая 2020

Я регистрирую своего пользователя в БД mon go. Я создаю экземпляр данных в форме и вызываю метод .save () для mon goose. Однако в моем приложении происходит сбой (хотя пользователи отлично сохраняются в базе данных): -

Первоначально я думал, что я не сохраняю «подтвердить пароль» в экземпляре, так что это может создавать ошибку, но даже после комментируя эту часть кода, проблема все еще сохраняется.

Я не создавал ничего по имени код в своих файлах.

Ниже приводится моя ошибка

Error:-
events.js:298
      throw er; // Unhandled 'error' event

TypeError: Cannot read property 'code' of null

Это мой почтовый запрос: -

router.post("/signup", function(req,res){
let registered_user=new User(req.body);
registered_user.save(function(err, doc){
    if(err){
        console.log("Something went Wrong");
    }
    if(err.code===11000){
        console.log("User with same details already registed");
    }
});
res.redirect("/");
});

Это моя HTML Форма: -

<form action="/signup" method="POST">
    <div class="form-group">
        <label><strong>Enrollment Number</strong>
            <br> 
        <input class="form-control" type="text" name="EnrollNumber" placeholder="Enrollment Number" required>
    </div>
    <div class="form-group">
        <label><strong>Email:-</strong>
            <br> 
        <input class="form-control" type="email" name="Email" placeholder="Email" required>
    </div>
    <div class="form-group">
        <label><strong>Name</strong>
            <br>
        <input class="form-control" type="text" name="Name" placeholder="Name" required>
    </div>
    <div class="form-group">
        <label><strong>Department</strong> 
        <select id="" name="Department" required>
            (...)
          </select>
    </div>
    <div class="form-group">
        <label><strong>Position</strong> 
        <select id="" name="Role" required>
            <option value="Student">Student </option>
            ...(Some more)
          </select>
    </div>
    <div class="form-group">
        <label><strong>Gender</strong> 
        <select id="" name="Gender" required>
            (...)
          </select>
    </div>
    <div class="form-group">
    <label><strong>password :</strong><br>
        <input name="password" id="password" type="password" onkeyup='check();'>
      </label>
      <br>
      <label><strong>Confirm Password:</strong>
        <br> 
        <input type="password" id="confirm_password" onkeyup='check();'> 
        <span id='message'></span>
      </label>
    </div>
    <div class="form-group">
        <button class="btn btn-lg btn-info btn-block">Submit!</button>
    </div>
</form>

И моя пользовательская схема

var UserSchema=new mongoose.Schema({
Name: {
    type:String,
    required: true
},
Email: {
    type:String,
    required: true,
    unique: true
},
Role: {
    type:String,
    required: true
},
EnrollNumber: {
    type:Number,
    required: true,
    unique: true
},
password: {
    type:String,
    required: true
},
Department: {
    type:String,
    required: true
},
Gender: {
    type:String,
    required: true
}
});

1 Ответ

1 голос
/ 06 мая 2020

Это потому, что вы используете 2 if операторов.

Первый if (err) {} будет оценен, а затем будет другой if (err.code) {}, который также будет оценен, в результате чего TypeError будет брошено.

Похоже, что вы пытаетесь сделать это

if (err) {
    if (err.code === 11000) {
        console.log('User was already registered');
    }
}
return 'User saved!';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...