【发布时间】: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