如何对其余API使用动态查询

时间:2019-05-07 10:48:01

标签: javascript node.js rest express

我是javascript的初学者,我正在尝试使用node.js创建一个简单的rest api。到目前为止,我已经掌握了。 我在influxdb中有一个名为testDb的数据库和一个名为testMeasurement的表。 testMeasurement表包含DateOfBirth,ID,FirstName,LastName

(ID是我的testMeasurement表中的标记)

var express = require('express');
const Influx = require('influx')

var app = express();

const influx = new Influx.InfluxDB('http://user:password@localhost:8086/testDb')

app.listen(3000, 'localhost');

    app.get('/myapi', function (req, res) {
        influx.query('select * from testMeasurement').then(result => {
          res.json(result)
        }).catch(err => {
          res.status(500).send(err.stack)
        })
      })

现在,上面给出了数据库“ testDb”的testMeasurement表中的所有数据。

如何动态定义查询,以便可以过滤结果? 例如如果我输入localhost/myapi/ID={someValue},这应该给我该ID的relatedData。

任何建议都会很有帮助。

1 个答案:

答案 0 :(得分:2)

有很多方法可以实现您想要的。最好的方法是使用通配符。示例:

app.get('/myapi/:userId', (req, res) => {
    var query_str = 'select * from testMeasurement';

    if (req.params.userId){
        query_str += ' where id = ' + req.params.userId;
    } 

    influx.query(query_str).then(result => {
        res.json(result)
    }).catch(err => {
        res.status(500).send(err.stack)
    })
});

这意味着您必须要使用结构化的API,并且每个项目都有节点。如果您只想测试一点,一个基本示例就是测试GET参数,例如:

app.get('/myapi', function (req, res) {
    var query_str = 'select * from testMeasurement';

    if (req.query.id != null){
        query_str += ' where id = ' + req.query.id;
    } 

    influx.query(query_str).then(result => {
        res.json(result)
    }).catch(err => {
        res.status(500).send(err.stack)
    })
})

希望有帮助!