我希望能够访问url /api/v1/campaigns,但我无法访问它,并且每当我从postman发送get请求时,我都会收到404错误。即使我尝试在浏览器中发出请求,它也不能工作?是特快版的吗?或者它不能访问路由器文件或控制台?
//下面是app.js文件
const express = require('express');
const morgan = require('morgan');
const campaignRouter = require('./routes/campaignRoutes');
const app = express();
//1) MIDDLEWARES
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}enter code here
app.use(express.json());
app.use(express.static(`${__dirname}/public`));
});
app.use('/api/v1/campaigns', campaignRouter);
app.all('*', (req, res, next) => {
res.status(404).json({
status: 'fail',
message: `Can't find ${req.originalUrl} on this server`,
});
});
module.exports = app;//下面是campaign路由器文件
const express = require('express');
// const campController = require('./../controllers/campController');
const campaignController = require('../controllers/campaignController');
const router = express.Router();
// router.param('id',campaignController.checkID);
router
.route('/top-5-cheap')
.get(
campaignController.aliasTopCampaigns,
campaignController.getALLcampaigns
);
router.route('/campaign-stats').get(campaignController.getCampaignStats);
router
.route('/')
.get(campaignController.getALLcampaigns)
.post(campaignController.createCampaign);
router
.route('/:id')
.get(campaignController.getCampaign)
.patch(campaignController.updateCampaign)
.delete(campaignController.deleteCampaign);
module.exports = router;//下面有一个campaign controller文件
const Campaignmodel = require('../models/campaignModel');
const APIFeautures = require('../utils/apiFeatures');
exports.aliasTopCampaigns = (req, res, next) => {
req.query.limit = '5';
req.query.sort = '-ratingsAverage,fundingGoal';
req.query.fields = 'name,brief,fundingGoal, ratingsAverage ';
next();
};
//Build Query//1) Filtering
exports.getALLcampaigns = async (req, res) => {
try {
//execute query
const features = new APIFeautures(Campaignmodel.find(), req.query)
.filter()
.sort()
.limitfields()
.paginate();
const campaigns = await features.query;
res.status(200).json({
status: 'success',
results: campaigns.length,
data: {
campaigns,
},
});
} catch (err) {
res.status(404).json({
status: 'fail',
message: err,
});
}
};
exports.getCampaign = async (req, res) => {
try {
const campaign = await Campaignmodel.findById(req.params.id);
//Campaignmodel.findOne({_id:req.params.id});
res.status(200).json({
status: 'success',
data: { campaign },
});
} catch (err) {
res.status(404).json({
status: 'fail',
message: err,
});
}
};
// const newCampaign= new Campaignmodel({})
// newCampaign.save()
exports.createCampaign = async (req, res) => {
try {
const newCampaign = await Campaignmodel.create(req.body);
res.status(201).json({
status: 'success',
data: {
campaign: newCampaign,
},
});
} catch (err) {
res.status(400).json({
status: 'fail',
message: 'Invalid data sent!',
});
}
};
exports.updateCampaign = async (req, res) => {
try {
const campaignUpdated = await Campaignmodel.findByIdAndUpdate(
req.params.id,
req.body,
{
new: true,
runValidators: true,
}
);
res.status(200).json({
status: 'success',
data: {
campaignUpdated,
},
});
} catch (err) {
res.status(400).json({
status: 'fail',
message: 'Invalid data sent!',
});
}
};
exports.deleteCampaign = async (req, res) => {
try {
await Campaignmodel.findByIdAndDelete(req.params.id);
res.status(204).json({
status: 'success',
data: {
campaign: null,
},
});
} catch (err) {
res.status(400).json({
status: 'fail',
message: 'Invalid data sent!',
});
}
};
exports.getCampaignStats = async (req, res) => {
try {
const stats = await Campaignmodel.aggregate([
{
$match: { ratingsAvergae: { $gte: 4.5 } },
},
{
$group: {
_id: '$brief',
numCampaigns: { $sum: 1 },
numRatings: { $sum: '$ratingsQuantity' },
avgRating: { $avg: '$ratingsAverage' },
avgfundingGoal: { $avg: '$fundingGoal' },
minfundingGoal: { $min: '$fundingGoal' },
maxfundingGoal: { $max: '$fundingGoal' },
},
},
{ $sort: { avgfundingGoal: 1 } },
]);
res.status(200).json({
status: 'success',
data: { stats },
});
} catch (err) {
res.status(400).json({
status: 'fail',
message: 'Invalid data sent!',
});
}
};//下面有一个活动模型文件
const mongoose = require('mongoose');
const slugify = require('slugify');
const campaignSchema = new mongoose.Schema(
{
name: {
type: String,
required: [true, 'campaign must have a name'],
unique: true,
},
brief: {
type: String,
required: [true, 'campaign must have a name'],
trim: true,
},
duration: {
type: Number,
},
story: {
type: String,
required: [true, 'campaign must have a story'],
trim: true,
},
risk: {
type: String,
required: [true, 'You must address the risk'],
trim: true,
},
FAQ: {
type: String,
required: [true, 'You need to add FAQ'],
trim: true,
},
fundingGoal: {
type: Number,
required: [true, 'You must specify the fundingGoal'],
},
BankName: {
type: String,
required: [true, 'We need your bankname to send you the fundings'],
},
AccountNumber: {
type: Number,
required: [true, 'Please add your bank account number'],
unique: true,
},
IBAN: {
type: String,
required: [true, 'We need your IBAN to send you the fundings'],
unique: true,
},
slug: String,
ratingsAverage: {
type: Number,
default: 4.5,
},
ratingsQuantity: {
type: Number,
default: 0,
},
imageCover: {
type: String,
},
images: [String],
createdAt: {
type: Date,
default: Date.now(),
select: false,
},
launchDate: Date,
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true },
}
);
//Query Middleware
const Campaignmodel = mongoose.model('Campaignmodel', campaignSchema);
module.exports = Campaignmodel;发布于 2021-11-02 13:29:32
在app.js文件中添加express.urlencoded中间件:
app.use(express.json());
app.use(express.urlencoded({ extended: true })); https://stackoverflow.com/questions/69809755
复制相似问题