1.0.7 • Published 4 years ago

mongoose-repository-plugin v1.0.7

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Mongoose Repository Plugin

Mongoose plugin for create-graphql-express

Instalation

npm install --save mongoose-repository-plugin
npm install --save-dev @types/mongoose

Configuration

Create file mongoose-repository.ts inside repositories folder.

import { MongooseRepository } from 'mongoose-repository-plugin'
import { Repository } from 'graphql-api-scripts'

export interface MongooseRepository extends Repository {
}

export default MongooseRepository('mongoose', {
  useNewUrlParser: true,
  useCreateIndex: true,
  useUnifiedTopology: true
})
typedescription
folderstringrequired - models folder
optionsmongoose.ConnectionOptionsoptional - mongoose connection options
debugbooleanoptional - debug queries

Include mongoose in repositories.d.ts (it has to be the same name as the file created above without -repository)

import { MongooseRepository } from './mongoose-repository'

export interface Repositories {
  mongoose: MongooseRepository;
}

Set environment variable MONGO_URI in .env.dev eg.:

MONGO_URI="mongodb://user:password@host.mlab.com:11245/mydb"

Creating Models

Create user-model.ts inside the folder src/repositories/mongoose (-model is mandatory)

import { Mongoose, Document, Model } from 'mongoose'

interface User extends Document {
  uid: string;
  email: string;
}

export default ({ Schema, model }: Mongoose): Model<User> => {
  const schema = new Schema<UserModel>({
    uid: {
      type: String,
      required: true
    },
    email: {
      type: String,
      required: true
    }
  }, { timestamps: true })

  schema.index({ uid: 'text' }, { unique: true })

  return model('User', schema)
}

Edit mongoose-repository.ts and include the created model in MongooseRepository interface

import { UserModel } from './mongoose/user-model'

export interface MongooseRepository extends Repository {
  User: UserModel;
}