使用mongoose express js更新用户个人资料页面

时间:2020-06-27 09:56:49

标签: node.js mongodb express mongoose

我正在从事个人项目。我正在实现的常见功能之一是允许用户更新其个人资料,但是却很难。

这是我到目前为止所做的 表格

 <form
          action="/users/doctor-profile?_method=PUT"
          method="POST"
          enctype="multipart/form-data"
        >
          <input type="hidden" name="_method" value="PUT" />
                  
            <div class="form-group">
              <input
                type="text"
                class="form-control"
                id="name"
                name="name"
              />
            </div>
           
             <div class="form-group">
              <label for="phone">Phone</label>
              <input
                type="tel"
                class="form-control"
                id="formGroupExampleInput"
                name="phone"
              />
            </div>
            <div class="form-group">
              <label for="exampleInputEmail1">Email</label>

              <input
                type="email"
                class="form-control"
                id="formGroupExampleInput"
                name="email"
              />
            </div>   
            <button type="submit" class="btn btn-primary">Save changes</button>

                 </form>

这是我的用户模型

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
  },
  password: {
    type: String,
    required: true,
  },
  phone: {
    type: String,
    required: true,
  },
 
});

const User = mongoose.model("User", UserSchema);
module.exports = User;

这是我的发帖路线

router.post("/users/doctor-profile", (req, res) => {
  const { name, email,phone } = req.body;
  const _id = ObjectId(req.session.passport.user._id);
 console.log(_id)
  USer.findOne({ _id: _id })
    .then((user) => {
      if (!user) {
        req.flash("error_msg", "user not found");
        res.redirect("/users/doctor-profile");
      }
      if (typeof name !== "undefined") {
        user.name = name;
        console.log(user.name);
      }
      if (typeof email !== "undefined") {
        user.email = email;
      }
      if (typeof phone !== "undefined") {
        user.phone = phone;
      }
   
      user.save().then((User) => {
        req.flash("success_msg", "details updated successfully");
        res.redirect("/users/profile");
      });
    })
    .catch((err) => console.log(err));
});


控制台输出

application running on port 5000
mongodb connection successfull
5ef5bc20261beb1e6c1c25a3

但它不会更新数据库中的字段。

2 个答案:

答案 0 :(得分:0)

尝试一下:

user.save(function (err, resolve) {
if(err)
  console.log('db error', err)
   // saved!
 });

答案 1 :(得分:0)

你的 post route js 文件中有一个错字

这是您输入错误的代码:

;

用户应该是用户