微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 nodejs 中恢复参数表示不可能

如何解决从 nodejs 中恢复参数表示不可能

大家晚上好 我正在尝试使用 mongodb 设置一个快速服务器 只要我定义了不带参数的路由,我的测试就使用邮递员工作,但是一旦我创建了带参数的获取路由,就会出现 404 错误无法获取 /api/stuff在这条路线上放了一个 console.log 并且它没有通过 我一直在寻找几个小时并尝试了几种没有结果的解决方案 这是我的代码,你能帮我解决和理解问题吗 谢谢大家

我的文件 server.js :

     const http = require('http');
     const app = require('./app');

     const normalizePort = val => {
     const port = parseInt(val,10);

     if (isNaN(port)) {
       return val;
     }
     if (port >= 0) {
       return port;
     }
     return false;
   };
   const port = normalizePort(process.env.PORT || '4000');
   app.set('port',port);

   const errorHandler = error => {
     if (error.syscall !== 'listen') {
       throw error;
     }
     const address = server.address();
     const bind = typeof address === 'string' ? 'pipe ' + address : 'port: ' + port;
     switch (error.code) {
       case 'EACCES':
         console.error(bind + ' requires elevated privileges.');
         process.exit(1);
         break;
       case 'EADDRINUSE':
         console.error(bind + ' is already in use.');
         process.exit(1);
         break;
       default:
         throw error;
     }
   };

   const server = http.createServer(app);

   server.on('error',errorHandler);
   server.on('listening',() => {
     const address = server.address();
     const bind = typeof address === 'string' ? 'pipe ' + address : 'port ' + port;
     console.log('Listening on ' + bind);
   });

   server.listen(port);

我的文件 app.js

const express = require('express');
// Pour gérer la demande POST provenant de l'application front-end,// nous devrons être capables d'extraire l'objet JSON de la demande. Il nous faudra le package body-parser
const bodyParser = require('body-parser');

// utilisation du package mongoose pour interagir avec MongoDb
const mongoose = require('mongoose');

// import du schema de donnees Users
const User = require('./models/user');

const path = require ('path');


const cors = require("cors");

const app = express();


mongoose.connect('mongodb+srv://user1:bz8FcivTvhnjxzog@cluster0.d3kne.mongodb.net/leads_manager?retryWrites=true&w=majority',{ useNewUrlParser: true,useUnifiedTopology: true })
  .then(() => console.log('Connexion à MongoDB réussie !'))
  .catch(() => console.log('Connexion à MongoDB échouée !'));


// éfinissez sa fonction json comme middleware global pour votre application,// juste après avoir défini les headers de la réponse :
app.use(bodyParser.json());

app.use(
    bodyParser.urlencoded({
      // to support URL-encoded bodies
      extended: true,}),);

  
app.use (cors({
    origin: "*",// restrict calls to those this address
    methods: 'GET,PUT,POST,DELETE' 
  }))

app.use(express.static(path.join(__dirname,'build')));

//   recupere un utilisateur
app.get('/api/stuff/:id',(req,res,next) => {
    console.log(
        'coucou'
    );
    
  });


  

module.exports = app;```

thanks

解决方法

使您的路由参数可选,因为当您在路由中添加 :id 时,现在它必须为您传递一些东西。示例 /api/stuff/someid2131。要使其同时运行 /api/stuff/api/stuff/someid2131,请更改您到此 /api/stuff/:id? 的路线。

问题 :id? 表明您的路线是可选的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。