This package provides MongoDB integration for the SoapJS framework, enabling seamless interaction with MongoDB databases and ensuring that your data access layer is clean, efficient, and scalable.
- Easy-to-use MongoDB collections and query factories.
- Integration with the SoapJS framework for structured, clean architecture.
- Support for MongoDB operations such as find, insert, update, and delete.
- Custom error handling to improve debugging and error resolution.
- Compatibility with various MongoDB versions, with support for different features based on version detection.
Remember to have mongodb
and @soapjs/soap
installed in your project in which you want to use this package.
Install the package using npm:
npm install @soapjs/soap-node-mongo
import {
MongoSource,
MongoConfig
} from '@soapjs/soap-node-mongo';
const config = new MongoConfig({
database: 'yourDatabase',
hosts: ['localhost'],
ports: [27017],
user: 'yourUser',
password: 'yourPassword'
// additional config parameters
});
const soapMongo = await SoapMongo.create(config);
The MongoSource
class in @soapjs/soap
provides a flexible way to interact with MongoDB collections, supporting a range of customization options through its constructor. This allows you to configure how MongoSource
handles data mapping, query generation, and other aspects of database operations. Here’s how you can utilize these options:
To use MongoSource
, you typically need an instance of SoapMongo
, the collection name, and optionally, configuration options. Here’s a basic example:
import { SoapMongo, MongoSource } from '@soapjs/soap-node-mongo';
import { MyDocumentClass } from 'path_to_document_class';
const mongoSource = new SoapMongo(client, database);
const collection = new MongoSource<MyDocumentClass>(
mongoSource,
'myCollectionName',
{ modelClass: MyDocumentClass }
);
When creating a MongoSource
instance, you can provide additional options to customize its behavior:
-
modelClass
: Specifies a class that will be used for type mapping and potentially for applying decorators that help with serializing and deserializing the data.{ modelClass: MyDocumentClass }
-
modelFieldMappings
: Provides a way to explicitly define how fields in your documents should map to fields in your database models. This is useful when you do not have a model class or when you want to override default behavior.{ modelFieldMappings: { 'fieldInClass': { name: 'field_in_db', type: 'string' } } }
-
queries
: Allows passing a customMongoQueryFactory
instance if you have specific query handling needs that the default factory does not meet. This could include custom query logic, special parameter handling, or optimizations.{ queries: new MongoQueryFactory<MyDocumentClass>(/* custom configurations */) }
Here’s how you might configure a MongoSource
with a custom query factory and field mappings:
import { MongoQueryFactory, MongoSource } from '@soapjs/soap';
import { MyCustomQueryFactory } from 'path_to_custom_factory';
import { MyDocumentClass } from 'path_to_document_class';
const customQueryFactory = new MyCustomQueryFactory({
// Custom configuration for the factory
});
const collection = new MongoSource<MyDocumentClass>(
mongoSource,
'myCollectionName',
{
modelClass: MyDocumentClass,
modelFieldMappings: {
'propertyName': { name: 'databaseFieldName', type: 'string' }
},
queries: customQueryFactory
}
);
For detailed documentation and additional usage examples, visit SoapJS documentation.
If you encounter any issues, please feel free to report them here.
For any questions, collaboration interests, or support needs, you can contact us through the following:
- Official:
- Email: contact@soapjs.com
- Website: https://soapjs.com
- Radoslaw Kamysz:
- Email: radoslaw.kamysz@gmail.com
- Warpcast: @k4mr4ad
- Twitter: @radoslawkamysz
@soapjs/soap-node-mongo is MIT licensed.