arrays - 创建一个错误数组并通过快速闪存显示它们
问题描述
我正在尝试创建一个数组,在其中存储并加入来自字段验证的错误。我想要做的是向用户显示错误,以便他们可以在更新用户配置文件之前修复这些字段。
我现在拥有的代码如下,我发现的是 console.log message.push(err.messages)
。但是,当我尝试通过消息检查输出消息时,它会输出一个空数组 []
const express = require("express"),
router = express.Router(),
validator = require('validator'),
middleware = require("../middleware/index"),
User = require("../models/user");
...
...
...
router.put('/', (req, res) => {
var messages = [];
var updateUser = {
username: req.body.username,
email: req.body.email
}
User.findOneAndUpdate({
handle: req.user.handle
}, updateUser, (err, user) => {
if (err) {
messages.push(err.message);
} else {
user.save();
}
})
if (messages && messages.length > 0) {
if (messages.length = 1) {
var errors = messages.toString()
} else {
var errors = messages.join(' and ')
}
console.log(errors)
req.flash('error', errors)
res.redirect('/profile/edit')
} else {
console.log(messages)
req.flash('success', 'Your profile has been updated!')
res.redirect('/profile')
}
})
解决方案
当我尝试通过消息检查输出消息时,它输出一个空数组 []
发生这种情况是因为node
. messages
甚至在完成之前就会被记录User.findOneAndUpdate(){}
。
要在 db 调用后按顺序闪烁消息,您需要将其放在回调中。
改变它会导致,
router.put('/', (req, res) => {
User.findOneAndUpdate({
handle: req.user.handle
}, {
username: req.body.username,
email: req.body.email
}, (err, user) => {
var messages = [];
if (err) {
messages.push(err.message);
} else {
user.save();
}
var errors;
if (messages && messages.length > 0) {
if (messages.length = 1) {
errors = messages.toString()
} else {
errors = messages.join(' and ')
}
console.log(errors)
req.flash('error', errors)
res.redirect('/profile/edit')
} else {
console.log(messages)
req.flash('success', 'Your profile has been updated!')
res.redirect('/profile')
}
})
})
推荐阅读
- python - sqlalchemy 的闭幕式
- python - 对一位数和两位数的混合进行排序
- angular - 每次 HttpClient 调用时,Angular 6 都将 withCredentials 设置为 true
- javascript - 对象中的嵌套数组如何发生不变性
- mysql - Mysql插值
- r - ggplot饼图来自单列中的因子
- python - 为 Pandas DataFrame 创建计算列的有效方法
- javascript - 如何在 Electron 和 React 应用程序中的 componentDidMount() 中接收状态的更改值
- php - 测试返回比预期更多的断言
- ibm-cloud - 如何在 IBM Cloud 上获取 Node-Red IP 地址?