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-mongoThis 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.