Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bsondb

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bsondb

Base de datos con bson usando modelos.

  • 3.0.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

bsonDB

Base de datos usando bson basado en modelos.

Instalación:

npm install bsondb --save

Tabla de Contenidos

  • Introducción
  • Documentación
  • Notas

Introducción

bsonDB usa JSON binario y se desarrolla entorno a modelos (estructuras lógicas) para realizar acciones dentro de la base de datos. Por ahora sólo cuenta con bases de datos locales pero se tiene pensado implementar una base de datos en red al igual que implementar más métodos.

Antes de usar bsonDB se recomienda tener conocimiento sobre los tipos de datos primitivos de JavaScript.

Documentación

A continuación está la documentación de bsonDB. Para poder explicar de mejor manera la documentación, se asumirá que usted tiene definido a bsonDB así:

const DB = require('bsondb');

Schema

new DB.Schema(schema);

Este constructor crea la estructura (propiedades y tipos de valores* de éstas) de los datos que se almacenarán.

ParametroTipoOpcionalDescripción
schemaObjectNoUn objeto con el nombre de las propiedades y sus respectivos tipos de valores que almacenará.

Ejemplos

const DB = require('bsondb');

let SchemaNivel = new DB.Schema({
  id: String,
  nivel: Number,
  xp: Number
});
const DB = require('bsondb');

let SchemaPerfil = new DB.Schema({
  id: String,
  nivel: Number,
  monedas: Number,
  medallas: {
    type: Object,
    cantidad: Number,
    nombres: Array
  }
});
const DB = require('bsondb');

let SchemaGuild = new DB.Schema({
  id: String,
  descripcion: String,
  usuarios: Number,
  canales: {
    type: Object,
    canales_texto: {
      type: Object,
      nombres: Array
    },
    canales_voz: {
      type: Object,
      nombres: Array
    }
  },
  verificado: Boolean
});

@ Valor de Retorno ── Un Schema que sera usado en el constructor Model.

Model

new DB.Model(nombreDB, schema, directorio)

Este constructor crea un modelo que se utilizará para guardar (o hacer cualquier otra acción) en/con la base de datos con su Schema (estructura) respectivo.

ParametroTipoOpcionalDescripción
nombreDBStringNoNombre de la base de datos.
schemaSchemaNoEl Schema que usará el modelo.
directorioStringNombre del directorio donde se guardará la base de datos. Si el directorio no existe, se creará una carpeta llamada bsonDB y dentro de esa carpeta estará la base de datos que indicaste en nombreDB.

Ejemplo

const DB = require('bsondb');

let SchemaNivel = new DB.Schema({
  id: String,
  nivel: Number,
  xp: Number
});

// Si quieres exportar el modelo.
module.exports = new DB.Model('Niveles', SchemaNivel);

// Si quieres utilizarlo dentro del mismo archivo.
const NivelModel = new DB.Model('Niveles', SchemaNivel);

/**
 * Se creará un archivo llamado "Niveles.bson" en la carpeta que especificaste.
 * Si no especificaste una carpeta, se guardará en la carpeta "bsonDB".
**/

@ Valor de Retorno ── Una clase con los métodos que se verán a continuación.

Model#buildModel

Model.buildModel(objeto);

Crea un nuevo modelo basado en las propiedades y tipos de valores que especificaste en su Schema. El objeto tiene que tener las mismas propiedades que hay en el Schema del modelo, y los valores de las propiedades tienen que tener el mismo tipo de valor especificado en el Schema.

Puede ocurrir un error en los siguientes casos:

  • No colocas una(s) propiedad(es) del Schema.
  • Colocas una(s) propiedad(es) extra(s) (que no están en el Schema).
  • Si el tipo de valor de una propiedad es diferente al tipo de valor que especificaste en el Schema.
ParametroTipoOpcionalDescripción
objetoObjectNoUn objeto basado en el Schema.

Ejemplo

const DB = require('bsondb');

let SchemaReporte = new DB.Schema({
  id: String,
  usuario: String,
	razon: String,
	autor: {
		type: Object,
		id: String,
		usuario: String
	}
});

const ReporteModel = new DB.Model('Reportes', SchemaReporte);

let NuevoReporte = ReporteModel.buildModel({
	id: '292092693377712128',
	usuario: 'MegaStar',
	razon: 'wapo',
	autor: {
		id: '372466760848244736',
		usuario: 'iBisho'
	}
});

console.log(NuevoReporte); // { id: "292092693377712128", usuario... }

@ Valor de Retorno ── El objeto creado con un método save.

Modelo#save()

Modelo.save();

Sirve para guardar o actualizar datos en la base de datos. Sólo funciona en el valor de retorno del métodos Model#buildModel y Model#findOne.

Ejemplo
const DB = require('bsondb');

let SchemaReporte = new DB.Schema({
  id: String,
  usuario: String,
	razon: String,
	autor: {
		type: Object,
		id: String,
		usuario: String
	}
});

const ReporteModel = new DB.Model('Reportes', SchemaReporte);

let NuevoReporte = ReporteModel.buildModel({
	id: '292092693377712128',
	usuario: 'MegaStar',
	razon: 'wapo',
	autor: {
		id: '372466760848244736',
		usuario: 'iBisho'
	}
});

NuevoReporte.save()
  .then(data => console.log(data)) // Regresa el objeto guardado.
  .catch(error => console.log(error)); // Si no se guardaron los datos y hubo un error.

@ Promesa
@ Valor de Retorno ── Promesa. Si los datos fueron guardados correctamente, retorna los datos guardados (then). Si ocurrió un error, retorna un error (catch).

Model#findOne

Model.findOne(filtro, callback);

Este metodo te permite buscar un dato especifico en la base de datos, el dato encontrado puede ser modificado y guardado.

ParametroTipoOpcionalDescripcion
filtroFunctionNoEl filtro que se usará para buscar el modelo en la base de datos.
callbackFunctionNoUna función que se usará cuando se complete la búsqueda, tiene sólo 1 argumento. Si se encontró el modelo, el argumento será los datos del modelo. En el caso contrario será undefined.

Puedes modificar los valores del objeto retornado (si es que hay) del callback, pero sólo las que hay en el Schema, respetando los tipos de valores y propiedades.

Puede ocurrir un error en los siguientes casos:

  • Creas una(s) propiedad(es) extra(s) (que no están en el Schema)
  • El tipo de valor de la propiedad que actualizas es diferente al tipo de valor que especificaste en el Schema.

El valor del argumento del callback cuenta con el método save().

Ejemplo
const DB = require('bsondb');

let SchemaNivel = new DB.Schema({
  id: String,
  nivel: Number,
  xp: Number
});

let NivelModel = new DB.Model('Niveles', SchemaNivel)
let randomXP = Math.floor(Math.random() * 10) + 1;

NivelModel.findOne((modelo) => modelo.id == 'algunaID', (datos) => {
  // Creamos el modelo si no se encontró nada.
  if (!datos) {
    let NuevoModelo = NivelModel.buildModel({
      id: 'algunaID',
      nivel: 1,
      xp: randomxp
    });

    NuevoModelo.save().catch(error => console.log(error)); // Lo guardamos en la base de datos.
  //Si se encontró.
  } else {
    if ((datos.xp + randomxp) >= 30) {
      ++datos.nivel; //Le damos +1 a su nivel.
      datos.xp = 0; //Actualizamos su xp a 0.
      datos.save(); //Guardamos los cambios en la base de datos.
        .then(nuevosDatos => console.log(`¡Subiste al nivel ${nuevosDatos.nivel}!`))
        .catch(error => console.log(error));
    //Si el xp ganado no es suficiente para subir de nivel, sólo le aumentamos el xp.
    } else {
      datos.xp += randomxp;
      datos.save().catch(error => console.log(error)) //Guardamos los cambios en la base de datos.
    }
  }
});

@ Valor de Retorno ── Nada, es un callback.

Model#all

Model.all(callback);

Este metodo te permite obtener todos los datos de la base de datos.

ParametroTipoOpcionalDescripcion
callbackFunctionNoUna función que se usará cuando se complete la búsqueda, tiene sólo 1 argumento. Si se encontraron modelos, el argumento será un Array con todos los modelos existentes. En el caso contrario será undefined.
Ejemplo
NivelModel.all((datos) => {
  // Si no se encontró nada.
  if (!datos) {
    console.log('No hay ningun dato.');
  } else { // Si se encontró. ([{...},{...},{...},...])
    let usuarios = []
    for (let x = 0; x < datos.length; x++) {
      usuarios.push(`ID: ${datos[x].id}, Nivel: ${datos[x].nivel}, XP: ${datos[x].xp}`);
    }
    console.log(usuarios.join("\n"));
  }
});

@ Valor de Retorno ── Nada, es un callback.

Model#filter

Model.filter(filtro, callback)

Busca todos los modelos que coincidan con lo que especificaste en el filtro.

ParametroTipoOpcionalDescripcion
filtroFunctionNoEl filtro que se usará para buscar los modelos en la base de datos.
callbackFunctionNoUna función que se usará cuando se complete la búsqueda, tiene sólo 1 argumento. Si se encontraron modelos, el argumento será un Array de modelos coincidentes. En el caso contrario será undefined.

Cada modelo dentro del Array cuenta con el método save.

Ejemplo
NivelModel.filter((modelo) => modelo.nivel > 1, (datos) => { // Filtra niveles mayores a 1.
  // Si no se encontró nada.
  if (!datos) {
    console.log('No se encontró nada.');
  } else { // Si se encontró. ([{...},{...},{...},...])
    let usuarios = [];
    for (let x = 0; x < datos.length; x++) {
      usuarios.push(`ID: ${datos[x].id}, Nivel: ${datos[x].nivel}, XP: ${datos[x].xp}`);
    }
    console.log(usuarios.join("\n"));
  }
});

@ Valor de Retorno ── Nada, es un callback.

Model#remove

Model.remove(filtro, callback);

Elimina un modelo (que coincida con el filtro) de la base de datos.

ParametroTipoOpcionalDescripcion
filtroFunctionNoEl filtro que se usará para buscar el modelo en la base de datos.
callbackFunctionNoUna función que se usará cuando se complete la búsqueda, tiene sólo 1 argumento. Si se encontró un modelo, el argumento será el modelo eliminado. En el caso contrario será undefined.
Ejemplo
NivelModel.remove((modelo) => modelo.id == 'algunaID', (eliminado) => {
  // Si no se encontró nada.
  if (!eliminado) {
    console.log('No se encontró nada para borrar.');
  // Si se encontró y se eliminó.
  } else {
    console.log(`Se eliminó el modelo con ID ${eliminado.id}, su nivel era: ${eliminado.nivel}`);
  }
})

@ Valor de Retorno ── Nada, es un callback.

Notas

En BsonDB sólo puedes usar 5 tipos de valores para los Schemas (estructuras).

  • String
  • Number
  • Object
  • Array
  • Boolean

Keywords

FAQs

Package last updated on 20 Feb 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc