簡體   English   中英

如何運行API以及如何在API中輸入數據?

[英]How to run API and how to input the data in API?

我正在嘗試使用 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 則必須顯示過濾和排序。 所以,如果可能的話,發送任何想法......謝謝。

你從來沒有告訴它發送響應 - 你需要調用一個響應方法,如sendrendersendFilejson等。至於排序和過濾,你似乎已經在這樣做了......此外,快速代碼優化技巧:

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

到更清潔的干燥友好型

schools.find({
        city_id,
        location_id
    })

使用EcmaScript 6 技術 2) 使用camelCase ,即在第一個單詞之后大寫每個單詞的第一個字母以提高可讀性。 總結:調用一個響應方法並嘗試優化你的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM