1.120.0 • Published 7 months ago

@biorate/mongodb v1.120.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Mongodb

Mongodb ORM connector based on mongoose and typegoose

Examples:

import { inject, container, Types, Core } from '@biorate/inversion';
import { IConfig, Config } from '@biorate/config';
import {
  Severity,
  modelOptions,
  Prop,
  MongoDBConnector,
  IMongoDBConnector,
  model,
  ReturnModelType,
} from '@biorate/mongodb';

// Define models
@modelOptions({
  options: {
    allowMixed: Severity.ALLOW,
  },
  schemaOptions: { collection: 'test', versionKey: false },
})
export class TestModel {
  @Prop()
  firstName: string;

  @Prop()
  lastName: string;

  @Prop()
  age: number;
}

// Define root
export class Root extends Core() {
  @inject(MongoDBConnector) public connector: IMongoDBConnector;
  @model(TestModel) public test: ReturnModelType<typeof TestModel>;
}

// Bind dependencies
container.bind<IConfig>(Types.Config).to(Config).inSingletonScope();
container.bind<IMongoDBConnector>(MongoDBConnector).toSelf().inSingletonScope();
container.bind<Root>(Root).toSelf().inSingletonScope();

// Configure
container.get<IConfig>(Types.Config).merge({
  MongoDB: [
    {
      name: 'connection',
      host: 'mongodb://localhost:27017/',
      options: {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        dbName: 'test',
      },
    },
  ],
});

(async () => {
  const root = container.get<Root>(Root);
  await root.$run();
  await root.connector.connection().dropDatabase();

  const connection = root.connector.connection('connection'); // Get connection instance
  console.log(connection);

  await new root.test({
    firstName: 'Vasya',
    lastName: 'Pupkin',
    age: 36,
  }).save(); // insert data into test collection

  // Get data from database
  const data = await root.test.find({ firstName: 'Vasya' }, { _id: 0 });
  console.log(data); // {
                     //   firstName: 'Vasya',
                     //   lastName: 'Pupkin',
                     //   age: 36,
                     // }
})();

Learn

  • Documentation can be found here - docs.

Release History

See the CHANGELOG

License

MIT

Copyright (c) 2021-present Leonid Levkin (llevkin)

1.96.0

11 months ago

1.90.0

12 months ago

1.120.0

7 months ago

1.95.1

11 months ago

1.91.5

12 months ago

1.95.0

11 months ago

1.91.4

12 months ago

1.93.1

11 months ago

1.91.3

12 months ago

1.93.0

11 months ago

1.91.2

12 months ago

1.91.1

12 months ago

1.91.0

12 months ago

1.100.0

9 months ago

1.104.0

9 months ago

1.102.0

9 months ago

1.102.1

9 months ago

1.76.3

1 year ago

1.65.4

2 years ago

1.58.1

2 years ago

1.54.0

2 years ago

1.38.2

2 years ago

1.38.3

2 years ago

1.38.1

2 years ago

1.38.4

2 years ago

1.42.2

2 years ago

1.42.1

2 years ago

1.30.12

2 years ago

1.29.0

3 years ago

1.28.1

3 years ago

1.28.0

3 years ago

1.26.0

3 years ago

1.27.2

3 years ago

1.27.0

3 years ago

1.27.1

3 years ago

1.25.2

3 years ago

1.24.0

3 years ago

1.20.1

3 years ago

1.11.2

3 years ago

1.7.1

3 years ago

1.7.0

3 years ago

1.6.0

3 years ago

1.0.0

3 years ago

0.30.11

3 years ago

0.30.12

3 years ago

0.30.2

3 years ago

0.30.17

3 years ago

0.30.18

3 years ago

0.30.0

3 years ago

0.30.19

3 years ago

1.4.0

3 years ago

1.2.2

3 years ago

0.30.9

3 years ago

0.30.7

3 years ago

0.30.6

3 years ago

0.30.5

3 years ago

0.29.1

3 years ago

0.28.3

4 years ago

0.28.0

4 years ago

0.27.3

4 years ago

0.27.0

4 years ago

0.26.0

4 years ago