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封裝反射
- 聊聊jedis連線池對commons-pool的封裝封裝
- php封裝db 類連線sqlite3PHP封裝SQLite
- [譯] 使用 Node.js 提供百萬的活躍 WebSocket 連線Node.jsWeb
- node.js連線mongodbNode.jsMongoDB
- 如何從 InfluxDB/OpenTSDB 無縫連線到 TDengineUX
- node.js 封裝操作檔案類Node.js封裝
- Node連線MySQL並封裝其增刪查改MySql封裝
- Vue Axios 的封裝使用VueiOS封裝
- Node.js 服務連線 MySQLNode.jsMySql
- 長連線和短連線的使用
- laravel Es的封裝與使用Laravel封裝
- vue中使用axios的封裝VueiOS封裝
- Android中Retrofit的封裝使用Android封裝
- InfluxDB Linux 下安裝Linux
- vue中axios的使用與封裝VueiOS封裝
- ai問答:vue3+pinia+WebSocket 封裝斷線重連(實戰)AIVueWeb封裝
- influxdb使用入門UX
- linux下mysql安裝、授權、建立使用者、連線navicat、連線entityLinuxMySql
- 使用async await 封裝 axiosAI封裝iOS
- ToolBar專案封裝使用封裝
- iOS 封裝.framework 以及使用iOS封裝Framework
- Java 封裝 SDK 以及使用Java封裝
- 【Node.js】使用mongoose連線資料庫以及進行資料儲存Node.jsGo資料庫
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- 【封裝小技巧】is 系列方法的封裝封裝
- [譯]使用 Proxy 更好的封裝 Storage API封裝API
- Node.js 如何優雅的封裝一個實用函式的 npm 包Node.js封裝函式NPM
- Influxdb 介紹與使用UX
- Node.js學習之路23——Node.js利用mongoose連線mongodb資料庫Node.jsMongoDB資料庫
- 使用ts封裝一個ajax封裝
- RecyclerView使用封裝與優化View封裝優化
- lavarel 8 ES封裝及使用封裝
- 使用promise封裝wx.request()Promise封裝
- Dapper的封裝、二次封裝、官方擴充套件包封裝,以及ADO.NET原生封裝APP封裝套件
- aardio封裝庫) sunny抓包工具的使用封裝
- Flutter狀態管理provider的使用和封裝FlutterIDE封裝
- .net 中的 Dto 引數封裝物件 使用封裝物件