Neglected Puppy Market

    bcskill-eosio-mongodb-queries
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.1 • Public • Published

    EOSIO MongoDB Queries

    Build Status npm version MIT licensed

    Quickly and easily create complex MongoDB Queries for the EOSIO blockchain.

    Install

    npm

    $ yarn add eosio-mongodb-queries

    web

    <script src="https://wzrd.in/standalone/eosio-mongodb-queries@latest"></script>

    Quickstart

    import { MongoClient } from "mongodb";
    import { getAccount } from "eosio-mongodb-queries";
     
    (async () => {
        const client = await MongoClient.connect("mongodb://localhost:27017", { useNewUrlParser: true });
     
        // Optional Parameters
        const options = {
            gte_block_num: 0,
            lte_block_num: Infinity,
        };
        const result = await getAccount(client, "eosnationftw", options);
        // {
        //   name: 'eosnationftw',
        //   block_num: 6101090,
        //   stake_quantity: 2.8,
        //   stake_net_quantity: 0.4,
        //   stake_cpu_quantity: 2.4
        // }
    })();

    EOSIO Full Node

    You must first enable the MongoDB plugin to your EOSIO full node by including the following to your configuration.

    config.in

    # Override default maximum ABI serialization time allowed in ms (eosio::chain_plugin) 
    abi-serializer-max-time-ms = 5000
     
    # Plugin(s) to enable, may be specified multiple times 
    plugin = eosio::mongo_db_plugin
     
    # MongoDB URI connection string, see: https://docs.mongodb.com/master/reference/connection-string/. If not specified then plugin is disabled. Default database 'EOS' is used if not specified in URI. Example: mongodb://127.0.0.1:27017/EOS (eosio::mongo_db_plugin) 
    mongodb-uri = mongodb://localhost:27017

    Replay Blocks

    To allow actions to be decoded from the ABI, you must replay all blocks from the genesis.

    $ nodeos --replay-blockchain --hard-replay-blockchain --mongodb-wipe
    

    More Information on EOSIO GitHub

    Query Ideas

    • Vote Tally for eosio.forum (submitted by Denis from EOS Nation)
    • Block Producer votes & positions (submitted by Nathan from GenerEOS)
    • Name auction for all-time bids or current bid (submitted by Syed from EOS Cafe)

    References

    MongoDB Pipeline

    Contributors

    This is made with ♥ by:

    Voting on the EOSIO mainnet helps build more awesome tools for the EOS community.

    API

    Table of Contents

    getActions

    EOSIO MongoDB Actions

    Parameters

    • client MongoClient MongoDB Client
    • options Object Optional Parameters (optional, default {})
      • options.account (string | Array<string>)? Filter by account contracts (eg: ["eosio","eosio.token"])
      • options.name (string | Array<string>)? Filter by action names (eg: ["undelegatebw", "delegatebw"])
      • options.limit number Limit the maximum amount of of actions returned (optional, default 25)
      • options.skip number? Skips number of documents
      • options.sort object? Sort by ascending order (1) or descending order (-1) (eg: {block_num: -1})
      • options.match object? Match by entries using MongoDB's $match (eg: {"data.from": "eosio"})
      • options.trx_id string? Filter by exact Transaction Id
      • options.irreversible boolean? Irreversible transaction (eg: true/false)
      • options.block_num number? Filter by exact Reference Block Number
      • options.block_id string? Filter by exact Reference Block ID
      • options.lte_block_num number? Filter by Less-than or equal (<=) the Reference Block Number
      • options.gte_block_num number? Filter by Greater-than or equal (>=) the Reference Block Number

    Examples

    const options = {
        account: "eosio",
        name: ["delegatebw", "undelegatebw"],
        match: {"data.from": "eosnationftw", "data.receiver": "eosnationftw"},
        irreversible: true,
        sort: {block_num: -1}
    };
    const results = await getActions(client, options);
    console.log(await results.toArray());

    Returns AggregationCursor<Actions> MongoDB Aggregation Cursor

    getBlocks

    EOSIO MongoDB Blocks

    Parameters

    • client MongoClient MongoDB Client
    • options Object Optional Parameters (optional, default {})
      • options.limit number Limit the maximum amount of of actions returned (optional, default 25)
      • options.skip number? Skips number of documents
      • options.sort object? Sort by ascending order (1) or descending order (-1) (eg: {block_num: -1})
      • options.match object? Match by entries (eg: {"block.producer": "eosio"})
      • options.block_num number? Filter by exact Reference Block Number
      • options.block_id string? Filter by exact Reference Block ID
      • options.lte_block_num number? Filter by Less-than or equal (<=) the Reference Block Number
      • options.gte_block_num number? Filter by Greater-than or equal (>=) the Reference Block Number

    Examples

    const options = {
        match: {"block.producer": "eosnationftw"},
        sort: {block_num: -1}
    };
    const results = await getBlocks(client, options);
    console.log(await results.toArray());

    Returns AggregationCursor<Blocks> MongoDB Aggregation Cursor

    getAccountControls

    EOSIO MongoDB Account Controls

    Parameters

    • client MongoClient MongoDB Client
    • options Object Optional Parameters (optional, default {})
      • options.limit number Limit the maximum amount of of actions returned (optional, default 25)
      • options.sort object? Sort by ascending order (1) or descending order (-1) (eg: {controlled_account: -1})
      • options.skip number? Skips number of documents
      • options.match object? Match by entries (eg: {controlled_account: "eosio.saving"})

    Examples

    const options = {
        match: {controlled_account: "eosio.saving"},
    };
    const results = await getAccounControls(client, options);
    console.log(await results.toArray());

    Returns AggregationCursor<AccountControls> MongoDB Aggregation Cursor

    setDefaultLimit

    Set default limit

    Parameters

    • options object Optional Parameters (optional, default {})

    Examples

    setDefaultLimit() //=> 25

    Returns number Default Limit value

    addBlockFiltersToPipeline

    Add Block Filters to Pipeline

    Parameters

    • pipeline Array<object> MongoDB Pipeline
    • options object Optional Parameters (optional, default {})
      • options.irreversible boolean? Irreversible transaction (eg: true/false)
      • options.block_num number? Filter by exact Reference Block Number
      • options.block_id string? Filter by exact Reference Block ID
      • options.lte_block_num number? Filter by Less-than or equal (<=) the Reference Block Number
      • options.gte_block_num number? Filter by Greater-than or equal (>=) the Reference Block Number

    Returns void Appends results to pipeline

    getAccount

    Get Account Details

    Parameters

    • client MongoClient MongoDB Client
    • name string Account Name
    • options Object Optional Parameters (optional, default {})
      • options.lte_block_num number? Filter by Less-than or equal (<=) the Reference Block Number

    Examples

    const name = "eosnationftw";
    const options = {
      block_num: 6000000,
    };
    const result = await getAccount(client, name, options);
    // {
    //   name: 'eosnationftw',
    //   block_num: 2092984,
    //   stake_quantity: 1.8,
    //   stake_net_quantity: 0.9,
    //   stake_cpu_quantity: 0.9,
    //   actions: [...Actions]
    // }

    Returns Object Account Details

    getAccounts

    EOSIO MongoDB Accounts

    Parameters

    • client MongoClient MongoDB Client
    • options Object Optional Parameters (optional, default {})
      • options.abi boolean? Does abi exist (eg: true/false)
      • options.limit number Limit the maximum amount of of actions returned (optional, default 25)
      • options.sort object? Sort by ascending order (1) or descending order (-1) (eg: {controlled_account: -1})
      • options.skip number? Skips number of documents
      • options.match object? Match by entries (eg: {controlled_account: "eosio.saving"})

    Examples

    const options = {
        match: {controlled_account: "eosio.saving"},
    };
    const results = await getAccounControls(client, options);
    console.log(await results.toArray());

    Returns AggregationCursor<AccountControls> MongoDB Aggregation Cursor

    Install

    npm i bcskill-eosio-mongodb-queries

    DownloadsWeekly Downloads

    2

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    78.7 kB

    Total Files

    45

    Last publish

    Collaborators

    • surou