【问题标题】:TypeError: Cannot read property 'code' of nullTypeError:无法读取 null 的属性“代码”
【发布时间】:2020-05-06 06:03:41
【问题描述】:

我正在 mongo DB 中注册我的用户。我正在表单中创建数据的实例并调用猫鼬的 .save() 方法。但是,我的应用程序崩溃了(尽管用户完美地保存在数据库中):-

最初,我认为我没有在实例中保存“确认密码”,因此可能会产生错误,但即使在注释掉这部分代码后问题仍然存在。

我没有在我的文件中以 code 的名称创建任何内容。

以下是我的错误

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
}
});

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    这是因为您使用了 2 个if 语句。

    第一个 if (err) {} 将被评估,然后另一个 if (err.code) {} 也将被评估,导致 TypeError 被抛出。

    看起来你正在尝试做的是这个

    if (err) {
        if (err.code === 11000) {
            console.log('User was already registered');
        }
    }
    return 'User saved!';
    

    【讨论】:

    • 确实如此,但在那里您会遇到同样的问题。您很可能希望在第一个 if 中返回,或者改为使用嵌套的 if
    猜你喜欢
    • 2020-01-29
    • 2022-01-12
    • 2021-12-04
    • 2021-12-17
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多