Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法更新、删除和列出所有用户_Node.js_Express - Fatal编程技术网

Node.js 无法更新、删除和列出所有用户

Node.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) }

我的路线:路线/users.js

我的控制器:usersController.js


尝试使用上述代码调试列表用户路由器:

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)

        })