我在尝试更新用户数据时遇到问题。控制台中显示“TypeError:无法读取null的属性(阅读'name')”,我不知道如何解决这个问题。我还使用Postman来帮助创建路由和http动词
//----编辑用户函数-----//
static async editUser(req, res) {
const id = req.params.id
// Check if User Exists - Sucesso
const token = getToken(req)
// ! Erro a partir do AWAIT de getUserByToken
const user = await getUserByToken(token)
const { name, email, address, password, confirmPassword } = req.body
let image = ""
// Validations
if (!name) {
res.status(422).json({ message: "O campo de nome não foi preenchido" })
return
}
console.log(name)
console.log(user.name)
user.name = name
console.log(name)
console.log(user.name)
if (!email) {
res.status(422).json({ message: "O campo de email não foi preenchido" })
return
}
// Check if email has already taken - sucesso
const userExists = await User.findOne({ email: email })
if (user.email !== email && userExists) {
res.status(422).json({ message: "Email já cadastrado, por favor utilize outro email" })
return
}
console.log(email)
console.log(user.email)
user.email = email
console.log(email)
console.log(user.email)
if (!address) {
res.status(422).json({ message: "O campo de endereço não foi preenchido" })
return
}
user.address = address
if (password != confirmPassword) {
res.status(422).json({ message: "As senhas não conferem" })
return
} else if (password === confirmPassword && password != null) {
// Create a new password
const salt = await bcrypt.genSalt(12)
const passwordHash = await bcrypt.hash(password, salt)
user.password = passwordHash
}
try {
// returns updated data
await User.updateOne(
{ _id: user._id },
{ $set: user },
{ new: true },
)
res.json({
message: 'Usuário atualizado com sucesso!'
})
} catch (error) {
res.status(500).json({ message: error })
}
//-----主控台错误-----//
[nodemon] restarting due to changes...
[nodemon] starting `node ./index.js localhost:5000`
Conectamos ao Mongoose
[nodemon] restarting due to changes...
[nodemon] starting `node ./index.js localhost:5000`
Conectamos ao Mongoose
João Victor
C:\Users\João Vitor\Documents\vs_code\projeto_restaurante\backend\Controllers\UserController.js:204 console.log(user.name)
^
TypeError: Cannot read properties of null (reading 'name')
at editUser (C:\Users\João Vitor\Documents\vs_code\projeto_restaurante\backend\Controllers\UserController.js:204:26)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.2.0
[nodemon] app crashed - waiting for file changes before starting...
我尝试更新用户,并希望在mongoDB中看到新值,但代码不工作,无法更新用户
1条答案
按热度按时间wfsdck301#
因为用户对象为空。请添加一个可选运算符或使用
useEffect
挂钩检查值首选方式