【问题标题】:Nodejs Rest API with mongoose and mongoDBNodejs Rest API 与 mongoose 和 mongoDB
【发布时间】:2016-09-23 08:42:54
【问题描述】:

我在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 等的结果。我是否必须为每个字段创建单独的端点?

【问题讨论】:

  • 你真的有两个选择。 1. 让一个端点返回多个字段。 2. 让单独的端点返回单独的字段。您的响应对象可以发送您希望从数据库发送的任何数据,因此您可以决定希望每个端点返回什么(1 个字段、多个字段或根本没有字段)

标签: node.js mongodb mongoose angular


【解决方案1】:

您是否使用 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);

这条路线支持:

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

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

【讨论】:

  • 如何在这里放置多个参数?在调用端点时,我应该为可选参数传递空值吗?
  • 我添加了一个工作示例,希望我回答了你的问题
猜你喜欢
  • 2017-12-29
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2019-04-27
相关资源
最近更新 更多