Node.js 无法更新、删除和列出所有用户
我的路线:路线/users.js 我的控制器:usersController.jsNode.js 无法更新、删除和列出所有用户,node.js,express,Node.js,Express,我的路线:路线/users.js 我的控制器:usersController.js 尝试使用上述代码调试列表用户路由器: listUsers: (req, res) => { console.log("inside listUsers") User.find({}, (err, data) => { if (err) { console.log(err.message) }
尝试使用上述代码调试列表用户路由器:
listUsers: (req, res) => {
console.log("inside listUsers")
User.find({}, (err, data) => {
if (err) {
console.log(err.message)
}
console.log(data)
})
这个答案可能会帮助您向客户端发送2次或更多次头,检查您的任何中间件是否正在发送头。我正在获取数据-所有用户的对象数组。但是这条路线有500个错误。另外,不是控制台日志err.message。此外,ERR_HTTP_HEADERS_SENT仍然存在。@metalHeadDev我更新代码snipet,删除req.send命令。再试一次,也许你有一个发送头的中间件。我不得不删除next(),现在它可以工作了。我不知道为什么?
const User = require("../models/User")
const auth = require("../utils/auth")
const validator = require("validator")
module.exports = {
registerUser: (req, res, next) => {
console.log("register controller")
const { username, email, password } = req.body
User.create(req.body, (err, createdUser) => {
if (err) {
return next(err)
} else if (!username || !email || !password) {
return res.status(400).json({ message: "Username, email and password are must" })
} else if (!validator.isEmail(email)) {
return res.status(400).json({ message: "Invaid email" })
} else if (password.length < 6) {
return res.status(400).json({ message: "Password should be of at least 6 characters" })
}
else {
return res.status(200).json({ user: createdUser })
}
})
},
loginUser: (req, res, next) => {
console.log("login controller")
const { email, password } = req.body
if (!email || !password) {
return res.status(400).json({ message: "Email and password are must" })
}
User.findOne({ email }, (err, user) => {
if (err) {
return next(err)
} else if (!validator.isEmail(email)) {
return res.status(400).json({ message: "Invalid email" })
} else if (!user) {
return res.status(402).json({ error: "User not found" })
} else if (!user.confirmPassword(password)) {
return res.status(402).json({ error: "Incorrect password" })
}
// generate token here
const token = auth.signToken(email)
res.status(200).json({ user, token })
// next()
})
},
getUser: (req, res, next) => {
User.findById(req.params.id, (err, user) => {
if (err) {
return next(err)
} else if (!user) {
return res.status(404).json({ message: "User not found" })
} else {
return res.status(200).json({ user: user })
}
})
next()
},
listUsers: (req, res) => {
console.log("inside listUsers")
User.find({}, (err, users) => {
if (err) {
return res.status(404).json({ error: "No users found" })
} else {
return res.status(200).json({ users: users })
}
})
},
updateUser: (req, res) => {
console.log("update user")
console.log(req.params.id)
User.findByIdAndUpdate(req.params.id, (err, updateduser) => {
if (err) {
return res.status(404).json({ error: "No user found" })
} else {
return res.status(200).json({ user: updateduser })
}
})
},
deleteUser: (req, res, next) => {
console.log("delete user")
User.findByIdAndDelete(req.params.id, (err, deleteduser) => {
if (err) {
return res.status(400).json({ error: "No user found" })
} else {
return res.status(200).json({ user: deleteduser })
}
})
}
}
inside listUsers
GET /api/v1/users/list 500 34.833 ms - 1757
events.js:174
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:470:11)
at ServerResponse.header (/home/asus/Desktop/myApp/node_modules/express/lib/response.js:767:10)
at ServerResponse.send (/home/asus/Desktop/myApp/node_modules/express/lib/response.js:170:12)
at ServerResponse.json (/home/asus/Desktop/myApp/node_modules/express/lib/response.js:267:15)
at User.find (/home/asus/Desktop/myApp/controllers/usersController.js:80:40)
at /home/asus/Desktop/myApp/node_modules/mongoose/lib/model.js:4784:16
at /home/asus/Desktop/myApp/node_modules/mongoose/lib/query.js:4389:12
at process.nextTick (/home/asus/Desktop/myApp/node_modules/mongoose/lib/helpers/query/completeMany.js:35:39)
at process._tickCallback (internal/process/next_tick.js:61:11)
Emitted 'error' event at:
at /home/asus/Desktop/myApp/node_modules/mongoose/lib/model.js:4786:13
at /home/asus/Desktop/myApp/node_modules/mongoose/lib/query.js:4389:12
at process.nextTick (/home/asus/Desktop/myApp/node_modules/mongoose/lib/helpers/query/completeMany.js:35:39)
at process._tickCallback (internal/process/next_tick.js:61:11)
listUsers: (req, res) => {
console.log("inside listUsers")
User.find({}, (err, data) => {
if (err) {
console.log(err.message)
}
console.log(data)
})