我會盡量簡短。我已經使用本指南在我的專案中使用 MongoDB、NodeJS、Express、Mongoose:https : //github.com/joeythelantern/Typescript-Quickstart-Projects/tree/main/typescript-mongoose-quickstart
當我嘗試使用 POST 添加用戶時(使用 Postman >> 將所有引數添加為 json),它會拋出“標題”錯誤。我對 TypeScript 還很陌生,幾天來一直試圖找到答案,因此尋求幫助。
先感謝您。
整個錯誤:
TypeError: Cannot read property 'userid' of undefined
at Object.createUser (G:\Projects\React\first\src\Controllers\user.ts:9:17)
at Layer.handle [as handle_request] (G:\Projects\React\first\node_modules\express\lib\router\layer.js:95:5)
at next (G:\Projects\React\first\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (G:\Projects\React\first\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (G:\Projects\React\first\node_modules\express\lib\router\layer.js:95:5)
at G:\Projects\React\first\node_modules\express\lib\router\index.js:281:22
at Function.process_params (G:\Projects\React\first\node_modules\express\lib\router\index.js:335:12)
at next (G:\Projects\React\first\node_modules\express\lib\router\index.js:275:10)
at Function.handle (G:\Projects\React\first\node_modules\express\lib\router\index.js:174:3)
at router (G:\Projects\React\first\node_modules\express\lib\router\index.js:47:12)
編輯:錯誤指定來自控制器的用戶 ID。
let { userid, email, password, fname, lname, restrict } = req.body;
控制器:
const createUser = (req: Request, res: Response, next: NextFunction) => {
let { userid, email, password, fname, lname, restrict } = req.body;
const user = new User({
_id: new mongoose.Types.ObjectId(),
userid,
email,
password,
fname,
lname,
restrict
});
return user
.save()
.then((result) => {
return res.status(201).json({
user: result
});
})
.catch((error) => {
return res.status(500).json({
message: error.message,
error
});
});
};
路線:
const router = express.Router();
router.post('/create/user', controller.createUser);
router.get('/get/users', controller.getAllUsers);
export default router;
模型:
const UserSchema: Schema = new Schema(
{
userid: { type: Number, required: true },
email: { type: String, required: true },
password: { type: String, required: true },
fname: { type: String, required: true },
lname: { type: String, required: true },
restrict: { type: Number, required: true },
organs: [
{
orgid: { type: Number, required: false },
empnumber: { type: Number, required: false },
lvl: { type: Number, required: false }
}
]
},
{
timestamps: true
}
);
export default mongoose.model<IUser>('User', UserSchema);
uj5u.com熱心網友回復:
問題不在于這些代碼中的任何一個,而是在服務器檔案中。
老的
express.json();
express.urlencoded({ extended: false });
使固定
router.use(express.json());
router.use(express.urlencoded({ extended: false }));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333163.html
