错误:在Node.js中需要Mongoose Schema



我正在学习一个udemy课程,我们建立一个类似Yelp的网站,但为露营地。

每当我尝试更新露营地时,我都会遇到问题。

Error: "campground" is required
at module.exports.validateCampground (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/middleware.js:19:9)
at Layer.handle [as handle_request] (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/layer.js:95:5)
at next (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/route.js:137:13)
at module.exports.isLoggedIn (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/middleware.js:12:3)
at Layer.handle [as handle_request] (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/layer.js:95:5)
at next (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/route.js:137:13)
at next (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/route.js:131:14)
at Route.dispatch (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/layer.js:95:5)
at /Volumes/Samip/ColtHTML/Node/Mongoose/YelpCamp/node_modules/express/lib/router/index.js:281:22

我查看了相关的方法和模式,但没有找到导致错误的任何东西。有人能帮帮忙吗?

我的Joi模式是这样的

const Joi = require('joi');
module.exports.campgroundSchema = Joi.object({
campground: Joi.object({
title: Joi.string().required(),
price: Joi.number().required().min(0),
//image: Joi.string(),
location: Joi.string().required(),
description: Joi.string().required()
}).required()
});

更新露营地代码:

module.exports.updateCampground = async (req, res) => {
const { id } = req.params;
const campgrounds = await campground.findByIdAndUpdate(id, { ...req.body.campground });
const imgs = req.files.map((f) => ({ url: f.path, filename: f.filename }));
campgrounds.images.push(...imgs);
await campgrounds.save();
req.flash('success', 'Successfully updated Campground');
res.redirect(`/campgrounds/${campgrounds._id}`);
};

validateCampground方法如下:

module.exports.validateCampground = (req, res, next) => {
const { error } = campgroundSchema.validate(req.body);
if (error) {
const msg = error.details.map((el) => el.message).join(',');
throw new ExpressError(msg, 400);
} else {
next();
}
};

有谁能帮帮我吗?

validateCampground方法应该是这样的:

const { error } = campgroundSchema.validate(req.body.campground);

最新更新