Code Monkey home page Code Monkey logo

mongoose-adapter's Introduction

mongoose-adapter Build Status npm

Make the mongoose easy to use.

Install

Install the components

$ npm install mongoose-adapter mockgoose mongoose --save

Quick Start

You can use TypeScirpt or JavaScript. Up to you.

TypeScript

Implement the BaseRepository for your mongoose collections.

//myUnitOfWork.ts
import { UnitOfWorkBase } from "mongoose-adapter";
import { PersonRep } from './personRep';

export class MyUnitOfWork extends UnitOfWorkBase {

  constructor() {
    super();
  }

  reps = {
    personRep: new PersonRep(this),
  };

}

//personRep.ts
import * as mongoose from "mongoose";
import { UnitOfWorkBase, RepositoryBase } from "mongoose-adapter";

export class PersonRep extends RepositoryBase<IPerson> {

  constructor(unitOfWork: UnitOfWorkBase) {
    super(unitOfWork);
  }

  getCollectionName() {
    return 'Person';
  }

  getSchema(): mongoose.Schema {

    const userSchema = {
      _id: { type: String, index: { unique: true } },
      name: { type: String },
      age: { type: Number },
      birthday: { type: Date },
    };
    const s = new mongoose.Schema(userSchema);
    return s;

  }

}

export interface IPerson extends mongoose.Document {
  _id: string;
  name: string;
  age: number;
  birthday: Date;
}

Examples for CRUD

// ==== create data =====
let myDb = new UnitOfWork();

var entity = myDb.reps.personRep.createNewEntity();
entity._id = "1qaz2wsx";
entity.name = "Bibby Chung";
entity.age = 18;
entity.birthday = new Date("1990-04-01 13:20:30");
myDb.add(entity);

await myDb.saveChangeAsync();


//==== update data ====
let myDb = new UnitOfWork();

let data = await myDb.reps.personRep.getAll()
    .find({ _id: "1qaz2wsx" })
    .exec();

let entity = data[0];
entity.name = "Bibby Chung 1";
entity.age = 22;
entity.birthday = new Date("1995-08-08 13:20:30");
myDb.update(entity);

await myDb.saveChangeAsync();


//==== delete data ====
let myDb = new UnitOfWork();

let data = await myDb.reps.personRep.getAll()
    .find({ _id: "1qaz2wsx" })
    .exec();

for (let item of data) {
  myDb.remove(item);
}

await myDb.saveChangeAsync();


//==== get data ====
let myDb = new UnitOfWork();

let data = await myDb.reps.personRep.getAll()
    .find({ _id: "1qaz2wsx" })
    .exec();

JavaScript

(later..)

Todo

  • add the transacation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.