如何在我的更新配置文件API中应用Mongoose验证

wlp8pajw  于 2023-01-31  发布在  Go
关注(0)|答案(1)|浏览(91)

这是我的架构

const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
x一个米二个一个x一个米三个一个x一个米四个一个x一个米五个一个x一个米六个一个x一个米七个一个x一个米八个一个x一个米九个一个x一个米十个一个x一个米十一个x一个米十二个x一个米十三个x一个米十四个x一个米十五个x一个米十六个x一个米十七个x一个米十八个xx一个米19个一个x一个米20个一个x一个米21个一个x一个米22个一个x一个米23个一个x一个米24个一个x一个米25个一个x一个米26个一个x一个米27个一个x一个米28个一个x一个米29个一个x一个米30个x一个米31个一个x一个米32个x一个米33个x一个米34个x一个米35个x一个米36个x一个米37个x一名男子38名1 x一名男子39名1 x一名男子40名1 x一名男子41名1 x一名男子42名1 x一名男子43名1 x一名男子44名1 x一名男子45名1 x一名男子46名1 x一名男子47名1 x一名男子48名1 x一名男子49名1 x一名男子50名1 x一名男子51名1 x一名男子52名1 x一名男子53名1 x一名男子54名1 x一名男子55名1 x一名男子56名1 x一名男子57名1 x一名男子58名1 x一名男子59名1 xx 1个60英寸1 x 1个61英寸1 x 1个62英寸1 x 1个63英寸1 x 1个64英寸1 x
`module.exports = mongoose.model('User', userSchema);``

这是我的路线

admin_route.get('/edit-user', auth.isLogin, adminController.edituserLoad);
admin_route.post('/edit-user',upload.single('image'), auth.isLogin, adminController.updateUser);

这是我的控制器

x1米68英寸1 x 1米69英寸1 x

const id = req.query.id;
    const userData = await User.findById({ _id: id });
    if (userData) {

        res.render('edit-user', { user: userData });

    } else {

        res.redirect('/admin/dashboard');

    }

} catch (error) {
    console.log(error.message);
}

}
x1米71英寸x1米72英寸

const id = req.body.id;
    const name = req.body.name;
    const email = req.body.email;
    const mobile = req.body.mobile;
    const companyname = req.body.companyname;
    const is_verified = req.body.verify;
    const image = req.file.filename;

    const userData = await User.findByIdAndUpdate({ _id: id }, { $set: { name: name, email: email, mobile: mobile, companyname: companyname, is_verified: is_verified, image: image} });

    res.redirect('/admin/dashboard');

} catch (error) {
    console.log(error.message);
}

}
“这是我的Ejs "

`<% include('../layouts/header.ejs') %>`

        <h1>Edit User</h1>

        <form action="" method="POST" enctype="multipart/form-data">

            <input type="text" name="name" required placeholder="Enter Name" value="<%= user.name %>">
            <br><br>
            <input type="email" name="email" required placeholder="Enter Email" value="<%= user.email %>">
            <br><br>
            <input type="text" name="mobile" placeholder="Enter Mobile" value="<%= user.mobile %>">
            <br><br>
            <input type="text" name="companyname" placeholder="Enter CompanyName (Optional)"
                value="<%= user.companyname %>">
            <br><br>
            <label> Verified </label>
            <input type="radio" name="verify" value="1" <% if (user.is_verified==1) { %> checked <% } %>>
            <nbsp></nbsp>
            <label> Unverified </label>
            <input type="radio" name="verify" value="0" <% if (user.is_verified==0) { %> checked <% } %>>
            <br><br>
            <input type="file" name="image" placeholder="Profile Picture">
            <input type="hidden" name="id" value="<%= user._id %>">
            <br><br>
            <input type="submit" value="Update User">

        </form>
        <br><br>
        <a href="/admin/dashboard">DashBoard</a>

        <% include('../layouts/footer.ejs') %>

请告诉我如何在我的更新配置文件API?中添加验证

f0brbegy

f0brbegy1#

下面提到的代码可以帮助.

const schema = new Schema({

name: {
    type: String,
    required: true
  }
});
const Cat = db.model('Cat', schema);

// This cat has no name :(
const cat = new Cat();

let error;
try {
  await cat.save();
} catch (err) {
  error = err;
}
    
assert.equal(error.errors['name'].message,
  'Path `name` is required.');

error = cat.validateSync();
assert.equal(error.errors['name'].message,
  'Path `name` is required.');

对于模式中的必需键,必须传递布尔值而不是字符串消息。
但是如果你必须传递字符串,使用下面提到的语法.

required: [true, 'Why no bacon?']

对于验证,请参考下面提到的代码。

validate: {
  validator: function(v) {
    return /\d{3}-\d{3}-\d{4}/.test(v);
  },
  message: props => `${props.value} is not a valid phone number!`
},

相关问题