Socket
Socket
Sign inDemoInstall

fastify-influxdb

Package Overview
Dependencies
3
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    fastify-influxdb

A Fastify plugin for injecting an InfluxDB instance on the framework


Version published
Weekly downloads
3
Maintainers
1
Install size
289 kB
Created
Weekly downloads
 

Readme

Source

Fastify InfluxDB Plugin using the Official InfluxDB Driver

NPM

CircleCI

Installation

npm i fastify-influxdb -s

Usage

const fastify = require("fastify")();
// Should be first declaration
fastify.register(require("fastify-influxdb"), {
  host: "localhost",
  database: "NOAA_water_database",
  schema: [
    {
      measurement: "average_temperature",
      fields: {
        "level description": "STRING",
        water_level: "FLOAT"
      },
      tags: ["location"]
    },
    {
      measurement: "h2o_pH",
      fields: {
        "level description": "STRING",
        water_level: "FLOAT"
      },
      tags: ["location"]
    },
    {
      measurement: "h2o_quality",
      fields: {
        "level description": "STRING",
        water_level: "FLOAT"
      },
      tags: ["location"]
    },
    {
      measurement: "h2o_temperature",
      fields: {
        "level description": "STRING",
        water_level: "FLOAT"
      },
      tags: ["location"]
    }
  ]
});

fastify.get("/", async (request, reply) => {
  const { instance } = fastify.influxdb;
  await instance.writePoints([
    {
      measurement: "h2o_temperature",
      tags: { location: "athens" },
      fields: { "level description": "Medium", water_level: 2.4324 }
    }
  ]);
  reply.send({
    rows: await instance.query(`
                  select * from h2o_temperature
                  where location = ${fastify.influxdb.escape.stringLit(
                    "athens"
                  )}
                  order by time desc
                  limit 10
                `)
  });
});

Description

This plugin adds an InfluxDB driver made available to all routes via the decorate function. It should be used whenever an InfluxDB instance needs to communicate with a Fastify API instance.

Options

OptionDescription
hostOptional, the host to connect to. Defaults to localhost
hostsOptional, the multiple hosts to connect to. If specified, multi-cluster setup will be passed on to influx
databaseOptional, the database to connect to. If the database does not exist, the library will create it.
schemaOptional, the schema of the database we are connecting to
usernameOptional, the username to use for authorization if any
passwordOptional, the password to use for authorization if any

Any schemas declared should follow the following format:

{
  measurement: "name_of_measurement",
  fields: {
    "level description": "STRING",
    water_level: "FLOAT"
  },
  tags: ["location"]
}

The above schema should be created according to the InfluxDB Node.JS Library Schema Specification.

One should note that instead of Influx.FieldType.TYPE and FieldType.TYPE he/she should specify the TYPE in string format instead. For example, the default schema presented in the above documentation link can be converted as follows:

// Before
{
  measurement: 'perf',
  tags: ['hostname'],
  fields: {
    memory_usage: FieldType.INTEGER,
    cpu_usage: FieldType.FLOAT,
    is_online: FieldType.BOOLEAN,
  }
}

// After
{
  measurement: 'perf',
  tags: ['hostname'],
  fields: {
    memory_usage: 'INTEGER',
    cpu_usage: 'FLOAT',
    is_online: 'BOOLEAN',
  }
}

The Influx object of the influx npm package is also provided by default in the decorator while the InfluxDB instance can be accessed via fastify.influxdb.instance.

Author

Alex Papageorgiou

License

Licensed under GPLv3.

Keywords

FAQs

Last updated on 23 Feb 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc