JSPM

  • Created
  • Published
  • Downloads 7
  • Score
    100M100P100Q112322F
  • License MIT

Mongo/GridFS backend for the travetto asset module

Package Exports

  • @travetto/asset-mongo

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@travetto/asset-mongo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

MongoDB Asset Source

Mongo/GridFS backend for the travetto asset module

Install: @travetto/asset-mongo

npm install @travetto/asset-mongo

This provides a mongodb implementation of the AssetSource which is a backend for the Asset module.

Code: Mongo backend wiring

import { InjectableFactory } from '@travetto/di';
import { MongoAssetSource, MongoAssetConfig } from '@travetto/asset-mongo';

class AppConfig {
  @InjectableFactory()
  static getSource(cfg: MongoAssetConfig) {
    return new MongoAssetSource(cfg);
  }
}

There is a default configuration that you can easily use, with some sensible defaults.

Code: Mongo configuration

import { Config } from '@travetto/config';

/**
 * Mongo configuration as asset source
 */
@Config('mongo.asset')
export class MongoAssetConfig {
  hosts: string = 'localhost';  // List of hosts, comma separated
  namespace = 'app'; // Database namespace
  port = 27017;
  options = {}; // connection options

  /**
   * Compute connection URL
   */
  get url() {
    const hosts = this.hosts.split(',').map(h => `${h}:${this.port}`).join(',');
    const opts = Object.entries(this.options).map(([k, v]) => `${k}=${v}`).join('&');
    return `mongodb://${hosts}/${this.namespace}?${opts}`;
  }
}

Additionally, you can see that the class is registered with the @Config annotation, and so these values can be overridden using the standard Configuration resolution paths.