我是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。
任何建议都会很有帮助。
答案 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)
})
})
希望有帮助!