Apache IoTDB uses Thrift as a cross-language RPC-framework so access to IoTDB can be achieved through the interfaces provided by Thrift. This document will introduce how to generate a native Node.js interface that can be used to access IoTDB.
pom.xml file in the root directory of the IoTDB source code folder.pom.xml file and find the following content:<execution> <id>generate-thrift-sources-python</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <generator>py</generator> <outputDirectory>${project.build.directory}/generated-sources-python/</outputDirectory> </configuration> </execution>
id, generator and outputDirectory to this:<execution> <id>generate-thrift-sources-nodejs</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <generator>js:node</generator> <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 files. The newly generated JavaScript sources will be located in iotdb/iotdb-protocol/thrift/target/generated-sources-nodejs in the various modules of the iotdb-protocol module.
Simply copy the files in iotdb/iotdb-protocol/thrift/target/generated-sources-nodejs/ and iotdb/iotdb-protocol/thrift-commons/target/generated-sources-nodejs/ into 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);