@exocet/pandora-mongodb

0.0.1-alpha.0 • Public • Published

Pandora MongoDB

Addon to provide flow and setup functions to MongoDB persistence for Pandora.

npm install --save @exocet/pandora-mongodb

Setup

Available features:

  • Create text indexes
  • Provides AQS query parser
  • Flow steps: insert (index), update, delete, exists and search

To add this addon into your project, put the addon spec into your endpoint YAML:

kind: Pandora/endpoint
metadata:
  name: myEndpoint
spec:
  addons:
    - name: mongodb
      package: "@exocet/pandora-mongodb"
      flow: true
      setup: true
  configuration:
    mongodb: # Any configuration here will be passed to client configuration (1)
      database: myDatabase
      url: mongodb://localhost:27017
      collections:
        - entityName: myNamespace.myEntity # To create index and mapping for an entity, pass the entity name, the settings bellow are the defaults
          textIndex: true
        - collectionName: myCollection
          textIndex: true
  1. Client configuration

After the setup the following property of the context will be available:

  • .application.dbs.mongoClient - The client connected to MongoDB
  • .application.dbs.mongodb - The connected database reference

Hooks

The hooks created by this addon are:

  • mongodbQueryParsers (.service.hooks.useHook('mongodbQueryParsers')) - Synchronous hook that parses the search AQS query into MongoDB aggregation pipeline.
     const [queryParsers] = this.service.hooks.useHook('mongodbQueryParsers');
     const queryParser = queryParsers(entityName);
     const {
     	pipeline, // The aggregation pipeline
     	hasMatch // Boolean to indicate if the pipeline have the match operation
     } = queryParser(
     	aqsQuery,
     	{ // Optional options
     		pipeline: [], // Existent aggregation pipeline
     	}
     );

Flow

The provided flow type and steps are listed bellow:

  • insert - This flow step insert data into MongoDB:
     kind: Pandora/flowStep
     metadata:
       name: entityPersistence
       labels:
         operation: insert
     spec:
       type: mongodb # Flow step type
       options:
         operation: insert # Defines that is an insert operation
         inboundFrom: request.data # The path to the data to be inserted (acquired from execution context)
         idFrom: null # If you want to use a custom ID instead of UUIDv4 you can pass the path from the execution context to get the ID value
         collectionName: null # If you're using custom collection name, pass the name here
         entity: # The entity to define the input parser hook
           namespace: myNamespace
           name: myEntity
  • exists - This flow step check if an entity exists by ID:
     kind: Pandora/flowStep
     metadata:
       name: entityPersistence
       labels:
         operation: exists
     spec:
       type: mongodb
       options:
         operation: exists
         idFrom: request.data.id # The path of the ID
         outboundTo: null # The execution path of the context to put the found ID, is an useful flow step to put before update and delete flows to get the native ID before operating the entity
         collectionName: null
         entity:
           namespace: myNamespace
           name: myEntity
  • update - This flow step updates entities:
     kind: Pandora/flowStep
     metadata:
       name: entityPersistence
       labels:
         operation: update
     spec:
       type: mongodb
       options:
         operation: update
         inboundFrom: request.data
         idFrom: request.data.id # The path of the ID to update entity
         collectionName: null
         entity:
           namespace: myNamespace
           name: myEntity
  • delete - This flow step deletes entities:
     kind: Pandora/flowStep
     metadata:
       name: entityPersistence
       labels:
         operation: delete
     spec:
       type: mongodb
       options:
         operation: delete
         idFrom: request.data.id
         collectionName: null
         entity:
           namespace: myNamespace
           name: myEntity
  • search - This flow step searches for entities using AQS:
     kind: Pandora/flowStep
     metadata:
       name: entityPersistence
       labels:
         operation: search
     spec:
       type: mongodb
       options:
         operation: search
         queryFrom: request.query # The execution context path that have the AQS querystring
         outboundTo: response # The execution context path to put the search result
         pipelineFrom: null # The execution context path that have an existing pipeline instance to append the parsed AQS filters, pass null to indicate the flow step to generate a new instance
         collectionName: null
         entity:
           namespace: myNamespace
           name: myEntity

Dependencies (3)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i @exocet/pandora-mongodb

    Weekly Downloads

    0

    Version

    0.0.1-alpha.0

    License

    Apache-2.0

    Unpacked Size

    49.6 kB

    Total Files

    19

    Last publish

    Collaborators

    • codermarcos
    • vflopes