Description
SugoiJS is a minimal modular framework.
SugoiJS gives you the ability to use only what you need and do it fast.
this is a standalone module that can be functional on its own (as all of the SugoiJS modules).
Sugoi mongoDB package provides ORM solutions for mongoDB.
This package relays on Sugoi\ORM infrastructure using the ConnectableModel abstract class.
@Sugoi\mongoDB alternatives and similar modules
Based on the "ODM / ORM" category.
Alternatively, view @Sugoi\mongoDB alternatives based on common mentions on social networks and blogs.
-
SheetJS js-xlsx
📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs -
TypeORM
ORM for TypeScript and JavaScript. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms. -
Sequelize
Feature-rich ORM for modern Node.js and TypeScript, it supports PostgreSQL (with JSON and JSONB support), MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle DB (v6), DB2 and DB2 for IBM i. -
Mongoose
MongoDB object modeling designed to work in an asynchronous environment. -
RxDB
A fast, offline-first, reactive database for JavaScript Applications https://rxdb.info/ -
Bookshelf
A simple Node.js ORM for PostgreSQL, MySQL and SQLite3 built on top of Knex.js -
Waterline
An adapter-based ORM for Node.js with support for mysql, mongo, postgres, mssql (SQL Server), and more -
MikroORM
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases. -
slonik
A Node.js PostgreSQL client with runtime and build time type safety, and composable SQL. -
firenze
Adapter based JavaScript ORM for Node.js and the browser -
@Sugoi\orm
SugoiJS ORM module typescript based - Simple solution for object handling with predefined lifecycle
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of @Sugoi\mongoDB or a related project?
README
@Sugoi\mongoDB
Introduction
SugoiJS is a minimal modular framework.
SugoiJS gives you the ability to use only what you need and do it fast.
this is a standalone module that can be functional on its own (as all of the SugoiJS modules).
Sugoi mongoDB package provides ORM solutions for mongoDB.
This package relays on Sugoi\ORM infrastructure using the ConnectableModel abstract class.
Installation
npm install --save @sugoi/mongoDB
tsconfig.json:
Under your tsconfig - compilerOptions set:
"target": "es2015"
"emitDecoratorMetadata": true
"experimentalDecorators": true
"lib": ["es2015","dom"]
Template
You are able to use the config template which was set for the @sugoi/demo application:
{
"compilerOptions": {
"baseUrl": "./src",
"allowJs": true,
"target": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es2015",
"dom"
],
"typeRoots": [
"./node_modules/@types"
],
"types": [
"body-parser",
"express",
"node"
]
}
}
Bootstrapping
Bootstrapping done by only one line:
MongoModel.setConnection(configuration:IConnectionConfig,connectionName:string = "default")
The connectionName is used for multiple connection
Example:
import {MongoModel} from "@sugoi/mongodb";
MongoModel.setConnection({
port: 27017,
protocol: "mongodb://",
hostName: "my-mongo.services.com",
db: "myAuthDB", //authorization DB
user: "dbUser",
password: "dbPassword"
}, "adminDB");
Create Model
to create a model, all you need is to extend the MongoModel class and set your properties.
Just like that:
export class Message extends MongoModel {
public userId:string;
public body:string;
constructor(userId:string,body:string){
super();
this.userId = userId;
this.body = body;
}
}
By default the collection name is the class name (case sensitive).
For override the collection name, use the @ModelName decorator:
@ModelName("AppMessage")
export class Message extends MongoModel {
public userId:string;
public body:string;
constructor(userId:string,body:string){
super();
this.userId = userId;
this.body = body;
}
}
Using connections
For using different connection for model you able to either use all you need to use
setConnectionName
static method or ConnectionName
decorator.
@ModelName("AppMessage")
@ConnectionName("appDB")
export class Message extends MongoModel {
public userId:string;
public body:string;
constructor(userId:string,body:string){
super();
this.userId = userId;
this.body = body;
this.constructor.setConnectionName("adminDB");
}
}
Model methods
Some of the model main methods:
Query
static find(query?: any): Promise>;
static findOne(query?: any): Promise;
Upsert
save(options: CollectionInsertOneOptions): Promise;
update(options?: ReplaceOneOptions): Promise;
Remove
remove(): Promise;
Find information about the model interface on @sugoi\orm documentation
Model lifecycle
@sugoi\mongodb module re-export orm lifecycle interfaces.
Find information about the model lifecycle on @sugoi\orm documentation
Documentation
You can find further information on Sugoi official website