【问题标题】:How to run API and how to input the data in API?如何运行 API 以及如何在 API 中输入数据?
【发布时间】:2020-11-17 01:39:42
【问题描述】:

我正在尝试使用 NodeJS、ExpressJS 和 MongoDB 创建一个 API,用于根据学校数据的位置和费用对学校数据进行过滤和排序。

所以,它的主要依据是:

const express = require('express');
const bodyparser = require('body-parser');
const mongoose = require('mongoose');

const apiRouter = require('./Routes/router');

const port = 4003;
const app = express();

app.use(bodyparser.json());

app.use('/api', apiRouter);

mongoose.connect(
    'mongodb://127.0.0.1:27017/schooldata',
    { useNewUrlParser: true, useUnifiedTopology: true }
).then(success => {
    console.log('Connected to MongoDB');

    app.listen(port, () => {
        console.log(`Server started at port ${port}`);
    });

}).catch(error => {
    console.log(error);
});

然后我做了 school_data 模型:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const schoolSchema = new Schema({
    _id: {
        type: Number,
        required: true
    },
    name: {
        type: String,
        required: true
    },
    city_id: {
        type: Number,
        required: true
    },
    location_id: {
        type: Number,
        required: true
    },
    country_name: {
        type: String,
        required: true
    },
    fees: {
        type: Number,
        required: true
    }
});

module.exports = mongoose.model('schools', schoolSchema, 'school');

然后是控制器部分:

const schools = require('../Models/schoolData');

exports.getfilter = (req, res) => {
    const location_id = req.body.location_id;
    const city_id = req.body.city_id;
    const cost = req.body.cost;

    schools.find({
        city_id: city_id,
        location_id: location_id
    }).sort({
        min_fees: cost,
        max_fees: cost
    }).then(result => {
        location_id = result,
        city_id = result,
        min_fees = result,
        max_fees = result
    }).catch(error => {
        message = error;
    })
}

然后我路由 API:

const express = require('express');
const schoolController = require('../Controllers/schoolData.js');

const router = express.Router();

router.get('/schoolFilter',schoolController.getfilter);

module.exports = router;

所以,如果我启动 NPM 并在邮递员中链接它,即链接('http://localhost:4003/api/schoolFilter'),则不会显示任何响应。另外,如何根据用户输入数据。例如。如果用户选择 location_id: Mumbai 和 min_fees: 40000 则必须显示过滤和排序。 所以,如果可能的话,发送任何想法......谢谢。

【问题讨论】:

    标签: javascript node.js mongodb api express


    【解决方案1】:

    您从未告诉它发送响应 - 您需要调用响应方法,例如 sendrendersendFilejson 等。 至于排序和过滤,似乎您已经在这样做了…… 另外,快速代码优化提示:

    1. 改变
    schools.find({
            city_id: city_id,
            location_id: location_id
        })
    

    对清洁剂干燥友好

    schools.find({
            city_id,
            location_id
        })
    

    使用 EcmaScript 6 技术 2) 使用camelCase,即在第一个单词之后将每个单词的第一个字母大写以提高可读性。 总结:调用一个响应方法并尝试优化你的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多