Node.js連線influxdb的使用封裝
分別基於2個Node.js的influxdb模組做了封裝,看自己喜好選擇
- influxdb-nodejs模組
const Influx = require('influxdb-nodejs');
const config = {
influxdb : {
host : "192.168.128.129",
port : "8086",
database : "gps",
table : "test", // 預設表
tables : {
test : {
// 定義tag欄位允許值
// tag寫入後均轉為字串 故不支援型別限定
// 未定義 || 不匹配 寫入空
// 限制方式:陣列列表 *通配
tagSchema : {
udid: '*',
},
// 定義欄位型別
// 型別不匹配寫入空 與已有表欄位型別不匹配報錯
// i->integer s->string f->float b->boolean
fieldSchema : {
lat: 's',
lng: 's',
value: 's',
}
},
}
}
}
exports.init = function (user_config) {
let cfg = config.influxdb;
user_config = user_config || {} ;
this.host = user_config.host ? user_config.host : cfg.host ;
this.port = user_config.port ? user_config.port : cfg.port ;
this.database = user_config.database ? user_config.database : cfg.database ;
this.table = user_config.table ? user_config.table : cfg.table ;
this.client = new Influx('http://' + this.host + ':' + this.port + '/' + this.database);
for (table in this.tables) {
this.client.schema(table, this.tables[table].fieldSchema, this.tables[table].tagSchema, {
stripUnknown: true, // default is false
});
}
return this;
}
exports.save = function (data) {
let table = data.table || this.table ;
let tags = data.tags ;
let fields = data.fields ;
let success = data.success;
let error = data.error;
this.client.write(table)
.tag(tags)
.field(fields)
.then(success)
.catch(error);
return this;
}
- influx模組
const Influx = require('influx');
const config = {
influxdb : {
host : "192.168.128.129",
port : "8086",
database : "gps",
table : "test", // 預設表
schema: [
{
measurement: 'test',
fields: {
lat: 's',
lng: 's',
value: 's',
},
tags: [
'udid'
]
}
]
}
}
exports.init = function (user_config) {
let cfg = config.influxdb;
// 處理欄位型別定義
for(let table of cfg.schema){
for(let field in table.fields){
switch(table.fields[field].toLowerCase())
{
case 's':
case 'str':
case 'string':
table.fields[field] = Influx.FieldType.STRING;
break;
case 'i':
case 'int':
case 'integer':
table.fields[field] = Influx.FieldType.INTEGER;
case 'f':
case 'float':
table.fields[field] = Influx.FieldType.FLOAT;
break;
case 'b':
case 'bool':
case 'boolean':
table.fields[field] = Influx.FieldType.BOOLEAN;
break;
}
}
}
user_config = user_config || {} ;
cfg.host = user_config.host ? user_config.host : cfg.host ;
cfg.port = user_config.port ? user_config.port : cfg.port ;
cfg.database = user_config.database ? user_config.database : cfg.database ;
this.table = user_config.table ? user_config.table : cfg.table ;
this.influx = new Influx.InfluxDB(cfg)
return this;
}
exports.save = function (data) {
for(let point of data){
point.measurement = point.table || point.measurement || this.table ;
}
this.influx = this.influx.writePoints(data);
return this;
}
exports.then = function (data) {
this.influx = this.influx.then(data);
return this;
}
相關文章
- Jdbc 封裝, 利用反射, 加入連線池JDBC封裝反射
- php封裝db 類連線sqlite3PHP封裝SQLite
- 聊聊jedis連線池對commons-pool的封裝封裝
- node.js連線mongodbNode.jsMongoDB
- [譯] 使用 Node.js 提供百萬的活躍 WebSocket 連線Node.jsWeb
- 如何從 InfluxDB/OpenTSDB 無縫連線到 TDengineUX
- Node連線MySQL並封裝其增刪查改MySql封裝
- node.js 封裝操作檔案類Node.js封裝
- Node.js 服務連線 MySQLNode.jsMySql
- node.js連線mongodb介紹Node.jsMongoDB
- node.js 連線外網redisNode.jsRedis
- HBase的安裝配置和使用Java連線Java
- 長連線和短連線的使用
- MAC下安裝Node.js(Express框架)連線redis資料庫MacNode.jsExpress框架Redis資料庫
- Vue Axios 的封裝使用VueiOS封裝
- laravel Es的封裝與使用Laravel封裝
- 使用封裝資源的物件封裝物件
- 學習連連看 連線線之謎+道具的使用
- ai問答:vue3+pinia+WebSocket 封裝斷線重連(實戰)AIVueWeb封裝
- centos7.2 influxdb安裝與簡單使用CentOSUX
- vue中使用axios的封裝VueiOS封裝
- Android中Retrofit的封裝使用Android封裝
- Scrapy Kafka的連線使用Kafka
- 多表外連線的使用
- 使用mysql的長連線MySql
- oracle 外連線的使用Oracle
- linux下mysql安裝、授權、建立使用者、連線navicat、連線entityLinuxMySql
- 【Node.js】使用mongoose連線資料庫以及進行資料儲存Node.jsGo資料庫
- influxdb 筆記: 安裝UX筆記
- Java 封裝 SDK 以及使用Java封裝
- ToolBar專案封裝使用封裝
- iOS 封裝.framework 以及使用iOS封裝Framework
- influxdb使用入門UX
- 【封裝小技巧】is 系列方法的封裝封裝
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- proxool連線池如何使用SSL方式連線?
- 編譯OpenSIPS使用連線原始碼安裝的MySQL薦編譯原始碼MySql
- [譯]使用 Proxy 更好的封裝 Storage API封裝API