node-js和mongoose无效arg类型错误



我正试图通过使用参数的用户名来查找用户。这是我的服务器端。

const express = require("express");
const mongoose = require("mongoose");
const app = express();
//ROUTES
const userRoute =require("./src/routes/userRoutes");
const postRoute =require("./src/routes/postRoutes");
const commentRoute =require("./src/routes/commentRoutes");
const port = process.env.PORT || 5000;
mongoose.connect("mongodb://localhost:27017/projectDB", {useNewUrlParser: true});
app.use(express.json());
app.use(express.urlencoded());
app.get("/", (req, res) =>{
res.send("hello");
});
app.use("/", userRoute, postRoute, commentRoute);

app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));

这是我的用户路由代码。

const express = require('express');
const userRouter = express.Router();
const userController = require("../controllers/userController");

userRouter.route("/users/:userName")
.get(userController.getUser)
.patch(userController.updateUser)
.delete(userController.deleteUser)
.post(userController.newUser);
module.exports = userRouter;

这里是用户的控制器。一切都很简单。

const mongoose = require("mongoose");
const Users = require("../models/userModel");

module.exports.getUser = (req, res) => {
console.log(req.params.userName);
res.status(200).send(Users.find({name: req.params.userName}), (err, res)=>{
if (res.err){
console.log("USER NOT FOUND");
}else{
console.log("Success!");
}
});
};

当我尝试获取路由请求"……"时/users/gokdeniz";哪个是数据库中的有效用户,我得到一个错误,说

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received type function ([Function (anonymous)])
at new NodeError (node:internal/errors:371:5)
at Function.from (node:buffer:322:9)
at ServerResponse.send (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibresponse.js:193:22)
at module.exports.getUser (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServersrccontrollersuserController.js:6:21)
at Layer.handle [as handle_request] (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterlayer.js:95:5)
at next (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterroute.js:144:13)      
at Route.dispatch (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterroute.js:114:3)
at Layer.handle [as handle_request] (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterlayer.js:95:5)
at C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterindex.js:284:15
at param (C:UserstlegeOneDriveMasaüstüproject 1untitled_projectServernode_modulesexpresslibrouterindex.js:365:14)

预先查找用户,然后将所需数据传递给send((函数。

module.exports.getUser = async (req, res) => {
const user = await Users.find({name: req.params.userName});
if (user) {
res.status(200).send(user)
} else {
res.status(404).send({error: "Not found"})
}

};

相关内容

最新更新