我有一些集合存储在远程MongoDB服务器上.我正在try 根据城市名称收集一个特定的Collection .我正在使用POSTMAN来模拟GET请求,但是执行的是不同的GET方法:

{
    message: "get is working!"
}

下面是代码:

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose'); 
const schema = require('../schemes/host_details');

router.get('/', (req, res, next)=>{
    res.status(200).json({
        message: 'get is working!'
    }); });

router.post('/', (req, res, next)=>{
    const host = new schema({
        _id: new mongoose.Types.ObjectId(),
        First_Name: req.body.f_name,
        Last_Name: req.body.l_name,
        State: req.body.state,
        City: req.body.city,
        Street_Address: req.body.st_address,
        Postal_Code: req.body.postal,
        Model_Make: req.body.model,
        Price: req.body.price,
        Lat: req.body.lat,
        Lng: req.body.lng
    });
    host.save().then(result=>{
        console.log(result);
    }) 
    .catch(err=>console.log(err));
    res.status(200).json({
        message: 'everthing will be ok, just hang in there!',
        createdHost: host
    }); });

router.get("/:city_name", (req, res, next)=>{

    const city_name_code = req.params.city_name;
    schema.findById(city_name_code).exec().then(doc=>{
        console.log(doc);
        res.status(200).json(doc);
    })
    .catch(err=>{console.log(err);
    res.status(500).json({error: err}); });

});

module.exports = router;

我的App.js代码—

const express=require('express');

const app=express();
var cors=require('cors'); 
const bodyParser=require('body-parser'); 
const mongoose=require('mongoose'); 
const host_details =require('./routes/host_details');


app.use(cors({origin:true,credentials:true}));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
mongoose.connect('mongodb+srv://xxx:xxxxxxxxxxxxxxxx.mt4xvth.mongodb.net/?retryWrites=true&w=majority&appName=xxxxxxxxxxxxxxx')


// app.use((req,res,next)=>{ 
//     res.status(200).json({ 
//         message:'abc' 
//     }); 
// });

app.use((req,res,next)=>{
    res.header("Access-Control-Allow-Origin","*");
    // res.header("Access-Control-Allow-Origin","Origin, X-Requested-With, Content-Type, Accept, Authorization");

    if(req.method==='OPTIONS')
    {
        res.header('Access-Control-Allow-Methods','PUT,POST,PATCH,DELETE');
        return res.status(200).json({});
    }
    next(); 
});


app.use('/hostdetails',host_details); 
module.exports= app;

POSTMAN_output

推荐答案

在Express中,req.queryreq.params之间有区别.

您正在try 导航到:

http://www.example.com/hostdetails/?City=Dublin

就Express而言,您已正确安装路由,但因为您有:

/?City=Dublin

然后,您将try 实现一个查询字符串,使其为req.query.

但你在这里使用req.params:

const city_name_code = req.params.city_name;

Solution:

将您的postman 请求发送到:

http://www.example.com/hostdetails/Dublin

然后在代码中,你需要根据你的模式搜索City个:

schema.findOne({City: city_name_code}).then(doc=>{
   console.log(doc);
   res.status(200).json(doc);
})

Node.js相关问答推荐

try 使用Puppeteer抓取Twitter时数组空

在child_Process中持久运行SSH命令

如何在RavenDB中执行JS索引?

try 使用Express和连接池将数据插入MySQL数据库时出现拒绝访问错误

是否可以在MongoDB中比较和匹配引用文档中的字段

如何从谷歌云中部署的应用程序连接到mongoDB Atlas?

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

Cypress.io - 如何等待返回调用属性的方法的结果?

Gulp 能否向 Docker 发出增量构建的第一次迭代完成的信号?

Mongoose-更新嵌套数组

node.js 变量不存在代码块

Socket IOFlutter 未连接

我可以通过 JNI 从 Node.js 调用 Java 吗?如何?

如何使用 mocha.js 模拟用于单元测试的依赖类?

在 express 中添加故意延迟

向 Stripe 提交付款请求时出现没有此类令牌错误

Node.js 应用程序有周期性的缓慢和/或超时(不接受传入的请求)

Node.js, require.main === 模块

在 Node.js 中获取终端的宽度