繁体   English   中英

Nodejs使用mongoose和mongoDB的Rest API

[英]Nodejs Rest API with mongoose and mongoDB

我在nodejs上有这个rest API,如下所示

 router.route('/api/Customers')          
    .post(function(req, res) {        
        var Customer = new Customer();
        Customer.name = req.body.name;

        Customer.save(function(err) {
            if (err)
                res.send(err);
            res.json({ message: 'Customer created!' });
        });
  })
    .get(function(req, res) {
        Customer.find(function(err, Customers) {
            if (err)
                res.send(err);

            res.json(Customers);
        });
  });

  router.route('/api/Customers/:Customer_id')    
    .get(function(req, res) {
        Customer.findById(req.params.Customer_id, function(err, Customer) {
            if (err)
                res.send(err);
            res.json(Customer);
        });
    })

    .put(function(req, res) {
        Customer.findById(req.params.Customer_id, function(err, Customer) {
            if (err)
                res.send(err);
            Customer.name = req.body.name;  
            Customer.save(function(err) {
                if (err)
                    res.send(err);
                res.json({ message: 'Customer updated!' });
            });
        });
    })

    .delete(function(req, res) {
        Customer.remove({
            _id: req.params.Customer_id
        }, function(err, Customer) {
            if (err)
                res.send(err);

            res.json({ message: 'Successfully deleted' });
        });
});

如何为特定字段创建端点? 例如,如果我想为CustomerName,CustomerZip等获取结果。我是否必须为每个字段创建单独的端点?

你使用express.js作为框架吗? 在这种情况下,您可以在路线中添加可选参数,例如:

router.route('/api/Customers/:Customer_id?')          
    .post(function(req, res) {        
...
  })
    .get(function(req, res) {
...
  });
});

通过这种方式:Customer_id将是可选的,您可以管理路线中的逻辑。

这是一个有效的例子:

app.route('/test/:param1?/:param2?')
    .get( function(req, res, next) {

        res.json({
            'param1' : req.params.param1,
            'param2' : req.params.param2
        });

    });

app.listen(8080);

这条路线支持:

  • /测试
  • /测试/ 1
  • /测试/ 1/2

在内部响应你可以看到这个参数的价值,我不知道如何通过param2没有param1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM