IoTDB uses Thrift as a cross language RPC framework, so access to IoTDB can be achieved through the interface provided by Thrift. This document will introduce how to generate a native Node.js interface that can access IoTDB.
Thrift (0.14.1 or higher) must be installed to compile Thrift files into Node.js code. The following is the official installation tutorial, and in the end, you should receive a Thrift executable file.
http://thrift.apache.org/docs/install/
<execution> <id>generate-thrift-sources-java</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <generator>java</generator> <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable> <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot> </configuration> </execution>
<execution> <id>generate-thrift-sources-nodejs</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <generator>js:node</generator> <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable> <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot> <includes>**/common.thrift,**/client.thrift</includes> <outputDirectory>${project.build.directory}/generated-sources-nodejs</outputDirectory> </configuration> </execution>
mvn clean generate-sources
,This command will automatically delete the files in iotdb/iotdb-protocol/thrift/target
and iotdb/iotdb-protocol/thrift-commons/target
, and repopulate the folder with the newly generated throttle file.
copy iotdb/iotdb-protocol/thrift/target/generated-sources-nodejs/
and iotdb/iotdb-protocol/thrift-commons/target/generated-sources-nodejs/
in your project。
// open a session TSOpenSessionResp openSession(1:TSOpenSessionReq req); // close a session TSStatus closeSession(1:TSCloseSessionReq req); // run an SQL statement in batch TSExecuteStatementResp executeStatement(1:TSExecuteStatementReq req); // execute SQL statement in batch TSStatus executeBatchStatement(1:TSExecuteBatchStatementReq req); // execute query SQL statement TSExecuteStatementResp executeQueryStatement(1:TSExecuteStatementReq req); // execute insert, delete and update SQL statement TSExecuteStatementResp executeUpdateStatement(1:TSExecuteStatementReq req); // fetch next query result TSFetchResultsResp fetchResults(1:TSFetchResultsReq req) // fetch meta data TSFetchMetadataResp fetchMetadata(1:TSFetchMetadataReq req) // cancel a query TSStatus cancelOperation(1:TSCancelOperationReq req); // close a query dataset TSStatus closeOperation(1:TSCloseOperationReq req); // get time zone TSGetTimeZoneResp getTimeZone(1:i64 sessionId); // set time zone TSStatus setTimeZone(1:TSSetTimeZoneReq req); // get server's properties ServerProperties getProperties(); // CREATE DATABASE TSStatus setStorageGroup(1:i64 sessionId, 2:string storageGroup); // create timeseries TSStatus createTimeseries(1:TSCreateTimeseriesReq req); // create multi timeseries TSStatus createMultiTimeseries(1:TSCreateMultiTimeseriesReq req); // delete timeseries TSStatus deleteTimeseries(1:i64 sessionId, 2:list<string> path) // delete sttorage groups TSStatus deleteStorageGroups(1:i64 sessionId, 2:list<string> storageGroup); // insert record TSStatus insertRecord(1:TSInsertRecordReq req); // insert record in string format TSStatus insertStringRecord(1:TSInsertStringRecordReq req); // insert tablet TSStatus insertTablet(1:TSInsertTabletReq req); // insert tablets in batch TSStatus insertTablets(1:TSInsertTabletsReq req); // insert records in batch TSStatus insertRecords(1:TSInsertRecordsReq req); // insert records of one device TSStatus insertRecordsOfOneDevice(1:TSInsertRecordsOfOneDeviceReq req); // insert records in batch as string format TSStatus insertStringRecords(1:TSInsertStringRecordsReq req); // test the latency of innsert tablet,caution:no data will be inserted, only for test latency TSStatus testInsertTablet(1:TSInsertTabletReq req); // test the latency of innsert tablets,caution:no data will be inserted, only for test latency TSStatus testInsertTablets(1:TSInsertTabletsReq req); // test the latency of innsert record,caution:no data will be inserted, only for test latency TSStatus testInsertRecord(1:TSInsertRecordReq req); // test the latency of innsert record in string format,caution:no data will be inserted, only for test latency TSStatus testInsertStringRecord(1:TSInsertStringRecordReq req); // test the latency of innsert records,caution:no data will be inserted, only for test latency TSStatus testInsertRecords(1:TSInsertRecordsReq req); // test the latency of innsert records of one device,caution:no data will be inserted, only for test latency TSStatus testInsertRecordsOfOneDevice(1:TSInsertRecordsOfOneDeviceReq req); // test the latency of innsert records in string formate,caution:no data will be inserted, only for test latency TSStatus testInsertStringRecords(1:TSInsertStringRecordsReq req); // delete data TSStatus deleteData(1:TSDeleteDataReq req); // execute raw data query TSExecuteStatementResp executeRawDataQuery(1:TSRawDataQueryReq req); // request a statement id from server i64 requestStatementId(1:i64 sessionId);