meadow-connection-mongodb
v1.0.2
Published
Meadow MongoDB Connection Plugin
Readme
meadow-connection-mongodb
MongoDB connection service for the Meadow data access layer.
Features
- Fable Service Provider -- integrates with the Fable dependency injection ecosystem
- Connection Pooling -- built-in pool management via the official MongoDB Node.js driver
- Collection & Index Management -- automatic collection creation and index generation from Meadow schemas
- Meadow-Compatible Settings -- accepts both Meadow-style (
Server,Port) and native MongoDB property names - Authentication Support -- optional username/password credentials with URL-encoded connection URIs
- Auto-Connect Mode -- optionally connect during service construction
- Idempotent Schema -- safe to call
createTable()on startup; existing collections are preserved
Installation
npm install meadow-connection-mongodbQuick Start
const libFable = require('fable');
const libMeadowConnectionMongoDB = require('meadow-connection-mongodb');
let _Fable = new libFable(
{
"MongoDB":
{
"Server": "localhost",
"Port": 27017,
"Database": "myapp"
}
});
_Fable.serviceManager.addAndInstantiateServiceType(
'MeadowMongoDBProvider', libMeadowConnectionMongoDB);
_Fable.MeadowMongoDBProvider.connectAsync(
(pError, pDatabase) =>
{
if (pError) { return console.error(pError); }
let tmpDB = _Fable.MeadowMongoDBProvider.pool;
// tmpDB is the MongoDB Db instance -- ready for queries
});Configuration
Settings are read from fable.settings.MongoDB:
| Setting | Alias | Default | Description |
|---------|-------|---------|-------------|
| Server | host | 127.0.0.1 | MongoDB host |
| Port | port | 27017 | MongoDB port |
| User | user | '' | Authentication username |
| Password | password | '' | Authentication password |
| Database | database | test | Database name |
| ConnectionPoolLimit | maxPoolSize | 10 | Maximum connections in pool |
API
| Method | Description |
|--------|-------------|
| connect() | Synchronous -- create MongoClient and Db handle |
| connectAsync(fCallback) | Callback-style connection (recommended) |
| pool | Getter -- returns the Db instance |
| client | Getter -- returns the raw MongoClient |
| generateCreateTableStatement(schema) | Generate a collection/index descriptor |
| createTable(schema, fCallback) | Create a collection and its indexes |
| createTables(schema, fCallback) | Create multiple collections sequentially |
| generateDropTableStatement(name) | Generate a drop descriptor |
Collection & Index Mapping
| Meadow DataType | Index Created | Unique |
|-----------------|---------------|--------|
| ID | Ascending | Yes |
| GUID | Ascending | Yes |
| ForeignKey | Ascending | No |
| String | None | -- |
| Numeric | None | -- |
| Decimal | None | -- |
| Text | None | -- |
| DateTime | None | -- |
| Boolean | None | -- |
Part of the Retold Framework
This module is a Meadow connector that plugs into the Retold application framework. It provides the MongoDB persistence layer for the Meadow data access abstraction.
Testing
npm testCoverage:
npm run coverageRelated Packages
- meadow -- Data access layer and ORM
- fable -- Application framework and service manager
- foxhound -- Query generation DSL (includes MongoDB dialect)
- stricture -- Schema definition and DDL tools
- meadow-endpoints -- RESTful endpoint generation
- meadow-connection-mysql -- MySQL/MariaDB connector
- meadow-connection-mssql -- Microsoft SQL Server connector
- meadow-connection-sqlite -- SQLite connector
License
MIT
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
