npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@soapjs/soap-node-mongo

v0.2.1

Published

Seamless MongoDB integration for SoapJS projects, facilitating clean architecture practices and streamlined database interactions.

Downloads

11

Readme

@soapjs/soap-node-mongo

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.

Features

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

Installation

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

Usage

1. Import the necessary components from the package:

import {
  MongoSource,
  MongoConfig
} from '@soapjs/soap-node-mongo';

2. Set up your MongoDB configuration:

const config = new MongoConfig({
  database: 'yourDatabase',
  hosts: ['localhost'],
  ports: [27017],
  user: 'yourUser',
  password: 'yourPassword'
  // additional config parameters
});

3. Create a new SoapMongo driver instance:

const soapMongo = await SoapMongo.create(config);

4. Using MongoSource for Database Operations

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:

Basic Usage

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 }
);

Configuration Options

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 custom MongoQueryFactory 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 */) }

Advanced Configuration Example

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
  }
);

Documentation

For detailed documentation and additional usage examples, visit SoapJS documentation.

Issues

If you encounter any issues, please feel free to report them here.

Contact

For any questions, collaboration interests, or support needs, you can contact us through the following:

License

@soapjs/soap-node-mongo is MIT licensed.