javascript - MongoDB 从正文中查找、更新和验证空字段
问题描述
在更新字段之前,我需要检查以下值是否不为空。因此,我按照以下方式构建,但不要检索我的 msg 错误,也不要让我更新配置文件用户。
router.post("/profileEdit/:id", ensureAuthenticated, (req, res) => {
var id = mongoose.Types.ObjectId(req.params.id);
let errors = [];
if (!req.body.firstName) {
errors.push({ text: "Please add your first name" });
}
if (!req.body.lastName) {
errors.push({ text: "Please add your last name" });
}
if (!req.body.username) {
errors.push({ text: "Please add your username" });
}
if (!req.body.email) {
errors.push({ text: "Please add you email" });
}
if (errors.length > 0) {
res.render("users/profileEdit", {
errors: errors,
firstName: req.body.firstName,
lastName: req.body.lastName,
username: req.body.username,
email: req.body.email
});
} else {
User.updateOne(
{ _id: id },
{
$set: {
firstName: req.body.firstName,
lastName: req.body.lastName,
username: req.body.username,
email: req.body.email
}
}
).then(user => {
req.flash("success_msg", "Profile Updated");
res.redirect("/users/profile/" + id);
});
}
});
如何验证每个字段的 req.body 是否为空?在此验证之后,我需要更新 mongodb 中的信息。
解决方案
解决方案如下:
在 else 之前,我只需要找到 _id:id,这样,由于上面的字段是空的,应用程序将返回填充字段的相同页面。
router.post("/profileEdit/:id", ensureAuthenticated, (req, res) => {
var id = mongoose.Types.ObjectId(req.params.id);
let errors = [];
if (!req.body.firstName) {
errors.push({ text: "Please add your first name" });
}
if (!req.body.lastName) {
errors.push({ text: "Please add your last name" });
}
if (!req.body.username) {
errors.push({ text: "Please add your username" });
}
if (!req.body.email) {
errors.push({ text: "Please add you email" });
}
if (errors.length > 0) {
User.find(
{ _id: id },
{
firstName: 1,
lastName: 1,
username: 1,
email: 1,
password: 1,
_id: { $elemMatch: { _id: id } },
date: 1
}
).then(user => {
res.render("users/profileEdit", {
user: user
});
});
} else {
User.updateOne(
{ _id: id },
{
$set: {
firstName: req.body.firstName,
lastName: req.body.lastName,
username: req.body.username,
email: req.body.email
}
}
).then(user => {
req.flash("success_msg", "Profile Updated");
res.redirect("/users/profile/" + id);
});
}
});
推荐阅读
- mysql - 如何使用 node.js+mysql+express 上传图片?
- android - Android SQLite 删除单个联系人
- controller - Loadrunner 控制器 - 用户在尝试一定次数的迭代后失败
- python - 在 Python 中将字典添加到一起
- asp.net-core - ASP.NET Core 发布带有输出的 FDD(不是 SCD)
- javascript - Webpack 4 和 Uglify 插件(TypeError:无法读取未定义的属性“长度”)
- php - 如何使用 Laravel 将随机默认图像插入数据库?
- c# - c# - 如何以最佳方式将大量数据导出到csv
- testing - 如何在 Go 中查看或测试优雅重启?
- ios - RxDataSources 和改变模型的能力