Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何启动NodeJS post?_Javascript_Node.js_Mongodb_Api_Mongoose - Fatal编程技术网

Javascript 如何启动NodeJS post?

Javascript 如何启动NodeJS post?,javascript,node.js,mongodb,api,mongoose,Javascript,Node.js,Mongodb,Api,Mongoose,我正在尝试使用POST创建一个餐馆的示例API,但在启动API并将其加载到Postman之后,它并没有显示结果 路由器.js const express = require('express'); const restaurantController = require('../Controllers/restaurantData'); const router = express.Router(); router.post('/restaurantFilter',(req, res) =&

我正在尝试使用POST创建一个餐馆的示例API,但在启动API并将其加载到Postman之后,它并没有显示结果

路由器.js

const express = require('express');
const restaurantController = require('../Controllers/restaurantData');

const router = express.Router();

router.post('/restaurantFilter',(req, res) => {
    restaurantController.getfilter
});

module.exports = router;
app.js

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

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

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

app.use(bodyparser.json());

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

mongoose.connect(
    'mongodb://127.0.0.1:27017/sample',
    { 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);
});
restaurant.js(控制器)

restaurantData.js(模型)

我想主要是路由器的问题,但我想知道在哪里?所以,分享任何想法。谢谢。

此请求处理程序:

router.post('/restaurantFilter',(req, res) => {
    restaurantController.getfilter
});
实际上不调用
getfilter
函数,因此POST请求不会发送任何内容。您可以通过执行以下任一操作来解决此问题:

router.post('/restaurantFilter', restaurantController.getfilter);
const restaurantController = require('../Controllers/restaurantData');
const restaurantController = require('../Controllers/restaurant.js');
或者这个:

router.post('/restaurantFilter',(req, res) => {
    restaurantController.getfilter(req, res);
});
然后,看起来您还必须导出和导入
getfilter()
函数的属性。在
restaurant.js中,您似乎可以很好地导出它:

exports.getfilter = (req, res) => { ... });
但是,在执行此操作时,似乎没有正确导入控制器:

router.post('/restaurantFilter', restaurantController.getfilter);
const restaurantController = require('../Controllers/restaurantData');
const restaurantController = require('../Controllers/restaurant.js');
当看起来您应该这样做时:

router.post('/restaurantFilter', restaurantController.getfilter);
const restaurantController = require('../Controllers/restaurantData');
const restaurantController = require('../Controllers/restaurant.js');

因此,您正在为控制器分配实际具有
getfilter
方法的对象。

router.post()
中,尝试将
restaurantController.getfilter
更改为
res.send(restaurantController.getfilter)
@hisam-这是不正确的
restaurantController.getfilter
是一个函数,需要调用并传递它
req
res