adapter-mongoose-driver v1.0.0
MongoDatabase
Este projeto tem por objetivo oferecer uma abstração das configurações de conexão e principais métodos da biblioteca Mongoose.js.
Instalação
A instalação deste pacote é feita através do NPM
- Adicione a referência do repositório privado através do arquivo ./.npmrc do PROJETO.
# ./.npmrc
registry=
always-auth=true
2. Adicione a biblioteca através do **NPM**.
```bash
# npm
npm install adapter-mongoose-driver --save
# yarn
yarn add adapter-mongoose-driver
Utilização
Para utilizar a biblioteca basta importar o módulo e fornecer as variáveis da instância do MongoDB que deseja-se conectar, a saber: host, username, password, database, port e sslKey. Vale lembrar que os parâmetros port e sslKey são opcionais, assumindo os valores 27017 e null respectivamente.
const getConnector = require('adapter-mongoose-driver');
const fs = require('fs');
const host = '127.0.0.1';
const username = 'root';
const password = 'root';
const port = 27017;
const database = 'admin';
let instance = null;
// SSL Key
const sslKey = fs.readFileSync(`${__dirname}/rds-combined-ca-bundle.pem`);
// Without SSL
instance = getConnector(host, username, password, database, port);
// With SSL
instance = getConnector(host, username, password, database, port, ssl);
Methods
getConnection (options = {})
Abre uma conexão com o banco MongoDB, fazendo uso dos parâmetros passados no construtor do módulo, além de permitir a passagem de parâmetros personalizados pelo objeto options.
const getConnector = require('adapter-mongoose-driver');
let instance = null;
// Without SSL
instance = getConnector(host, username, password, database, port);
const conn = await instance.getConnection();
closeConnection (conn)
Fecha uma conexão com a instancia do banco MongoDB.
const getConnector = require('adapter-mongoose-driver');
let instance = null;
// Without SSL
instance = getConnector(host, username, password, database, port);
const conn = await instance.getConnection();
await instance.closeConnection(conn);
getModel (conn, {name, schema, indexes = [], options = {}, virtuals = []})
Cria/Obtem o Model da collections enviada por parâmetro. Caso o model já tenha sido criado, este será reaproveitado
const getConnector = require('adapter-mongoose-driver');
let instance = null;
// Without SSL
instance = getConnector(host, username, password, database, port);
const conn = await instance.getConnection();
const schemaStruct = {
name: 'topics', // collectionName
schema: { // collectionStructure (Schema)
name: {type: String, required: true},
age: {type: String, required: true},
},
options: { // Mongoose Schema Options
timestamps: true,
toJSON: {virtuals: true},
toObject: {virtuals: true},
},
indexes: [ // Collection Indexes
{shortname: 1, learnPathId: 1, sessionId: 1},
],
virtuals: [ // Mongoose Virtual Properties
{property: 'likes', // Property name
value: {ref: 'topics_likes', // Property Merge Option
localField: '_id',
foreignField: 'topic',
},
},
],
}
const Model = await instance.getModel(
conn, schemaStruct
);
const doc = new Model({
name: 'Talita',
age: '22',
});
await doc.save();
await instance.closeConnection(conn);
getSchema (conn, {schema, indexes = [], options = {}, virtuals = []})
Cria o Schema dá Collection sem Criar o Model. Utilize este método apenas para usar de referência na construção de outros schemas (Embedded Collection).
const getConnector = require('adapter-mongoose-driver');
let instance = null;
// Without SSL
instance = getConnector(host, username, password, database, port);
const conn = await instance.getConnection();
const schemaStruct = {
name: 'topics', // collectionName
schema: { // collectionStructure (Schema)
name: {type: String, required: true},
age: {type: String, required: true},
},
options: { // Mongoose Schema Options
timestamps: true,
toJSON: {virtuals: true},
toObject: {virtuals: true},
},
indexes: [ // Collection Indexes
{shortname: 1, learnPathId: 1, sessionId: 1},
],
virtuals: [ // Mongoose Virtual Properties
{property: 'likes', // Property name
value: {ref: 'topics_likes', // Property Merge Option
localField: '_id',
foreignField: 'topic',
},
},
],
}
const Schema = await instance.createSchema(
conn, schemaStruct
);
await instance.closeConnection(conn);