1.0.0-alpha.4.0 • Published 4 years ago

@midgar/mongo v1.0.0-alpha.4.0

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

Build Status Coverage

@midgar/mongo

Intégration de Moogoose pour Midgar

Installation

$ npm i @midgar/mongo

Si tout s'est bien passé, un message de confirmation s'affiche:

#midgar-cli
@midgar/mongo added to plugins.json !

Configuration

Vous devez ajouter la confuguration suviante a votre projet avec un uri valide:

 mongo: {
    default: {
      uri: 'mongodb://localhost:27017/midgar?connectTimeoutMS=1000',
    }
  }

Vous devez ajouter plusieur connection à la configuration:

 mongo: {
    default: {
      uri: 'mongodb://localhost:27017/midgar?connectTimeoutMS=1000',
    },
    otherConnexion: {
      uri: 'mongodb://localhost:27017/otherDb?connectTimeoutMS=1000',
    }
  }

Fonctionnement

Ce plugin ajoute un type de module midgar-mongo-model dans le dossier ./mongo-models/.

Model

Voici un exemple de model:

const name = 'namespace:monmodel'

export default {
  name,
  model: (mongoose) => {
    const schema = mongoose.Schema({
      name: {
        type: String,
        required: true
      },
      description: {
        type: String,
        required: true
      },
      type: {
        type: String,
        required: true
      }
    })

    return mongoose.model(name, schema)
  }
}

Vous trouverez plus d'informations sur la structure des model mongoose dans la documentation.

Migration

Ce plugin ajoute un storage pour @midgar/migrate

Exemple de fichier

export default {
  up: async (mid, mongoService) => {
    const MonModel = mongoService.getModel('namespace:monmodel')
    const pulpFiction = new MonModel({ 
      name: 'Pulp Fiction', 
      description: 'L\'odyssée sanglante et burlesque de petits malfrats dans la jungle de Hollywoo.' 
      type: 'film'
    })

    await pulpFiction.save()
  },
  down: async (mid, mongoService) => {
    const pulpFiction = mongoService.getModel('namespace:monmodel')
    pulpFiction.deleteOne({ name: 'Pulp Fiction' })
  }
}