首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问我的/api/v1/campaigns?我似乎根本无法访问它

如何访问我的/api/v1/campaigns?我似乎根本无法访问它
EN

Stack Overflow用户
提问于 2021-11-02 11:37:24
回答 1查看 27关注 0票数 0

我希望能够访问url /api/v1/campaigns,但我无法访问它,并且每当我从postman发送get请求时,我都会收到404错误。即使我尝试在浏览器中发出请求,它也不能工作?是特快版的吗?或者它不能访问路由器文件或控制台?

//下面是app.js文件

代码语言:javascript
复制
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路由器文件

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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!',
    });
  }
};

//下面有一个活动模型文件

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2021-11-02 13:29:32

app.js文件中添加express.urlencoded中间件:

代码语言:javascript
复制
app.use(express.json()); 
app.use(express.urlencoded({ extended: true })); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69809755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档