【问题标题】:Multiple database queries with get request使用 get 请求进行多个数据库查询
【发布时间】:2015-12-19 04:29:11
【问题描述】:

有没有一种方法可以用一个 GET 请求进行多个数据库查询?

目前,我有这个返回员工数据的 GET 请求:

$.ajax({
    type: 'GET',
    url: '/employees',
    success: function(employees) {
        console.log(employees)
    }
});

在服务器端,它返回员工数据:

router.get('/employees', function(req, res, next) {
knex('employees').where({
    current: true
}).then(function(data) {
    res.send(data);
   });
});

但是,我想进行第二次数据库查询以将另一组数据返回给客户端。

有什么办法可以做到吗?

【问题讨论】:

  • 如果您有两个“数据库管理器”类来处理两个数据源 - 是的,您可以;附:你根本没有指定"server side" 逻辑。
  • 我猜他只有一个数据库,只想查询数据库两次,并在一个 http 响应中合并两个数据集,对吗?
  • @xersiee - 是的,这就是我想要做的。 dmitry - “服务器”是指应用程序服务器。

标签: javascript sql ajax node.js postgresql


【解决方案1】:

如果您需要依赖第一个查询的输出来调用另一个查询并将其作为来自服务器的一个 GET 请求返回,这是一种方法:

router.get('/employees', function(req, res, next) {
knex('employees').where({
    current: true
}).then(function(data) {
    // Here, you can make another database query 
    // assuming that you need to use employees data in order to make another query
    var result = {employees : data};
    anotherModel.where({options}).then(function(childData){
      result.anotherModel = childData; 
        res.send(result);
    });

   });
});

【讨论】:

  • 如果我的第二个查询不依赖于第一个查询,这会起作用吗?
  • @JustinNguyen 如果第二个不依赖于它,为什么要进行第一个查询?
  • 是的,如果第二个查询不依赖于第一个查询,它仍然可以工作。但是此时,您想查看节点异步模块并使用它来进行 2 个不同的数据库查询,并等待它们都返回,然后再将响应发送回客户端。
猜你喜欢
  • 2019-08-21
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 2016-11-28
相关资源
最近更新 更多