Security News
Input Validation Vulnerabilities Dominate MITRE's 2024 CWE Top 25 List
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
megadb es una actualizacion de mi antiguo package llamado mega-dtbs (https://www.npmjs.com/package/mega-dtbs)
- Se agrego nuevos metodos y parametros especiales.
- Se actualizo absolutamente todo el codigo para una mejor legibilidad y funcionamiento.
- La base de datos ahora es mas persistente.
- Ahora podras tener tus base de datos por separado.
- Errores descriptivos.
- Se arreglo un problema interno.
- Se creara una carpeta llamada mega_databases en la carpeta principal de tu proyecto, no borres esta carpeta a menos que quieras borrar absolutamente todas tus base de datos.
v2.7.0
V2.6.0
V2.5.0
V2.4.0
V1.9.0
V1.7.0
V1.5.0
V1.4.0
npm install megadb --save
const db = require('megadb');
### crearDB
crearDB(nombre_db, sub_directorio)
El constructor crearDB creará automáticamente una carpeta llamada mega_databases en tu proyecto, dentro de esta carpeta se almacenaran tus base de datos.
Argumentos
Actualizacion
En la version 2.5.0 se añadio un identificador interno a cada base de datos, esto hara que se puedan diferenciar en caso de que uses una db con el mismo nombre en diferentes sub directorios.
Ejemplos
//Ejemplo 1
const db = require('megadb');
let niveles = new db.crearDB('niveles');
/*
Esto hará que se cree la base de datos niveles.json dentro de la carpeta mega_databases
Estructura:
[–] node_modules
[+] mega_databases
- niveles.json
*/
//Ejemplo 2
const db = require('megadb');
let economia = new db.crearDB('guild_1', 'economia_db');
/*
Esto hará que se cree un sub directorio llamado "economia_db" dentro de la carpeta mega_databases, y dentro de este sub directorio se creará la base de datos guild_1.json
Estructura:
[–] node_modules
[+] mega_databases
[+] economia_db
- guild_1.json
- niveles.json
*/
### establecer
establecer(clave, valor, clave_split)
Este metodo te permite crear propiedades mediante una clave, tambien te permite actualizar datos existentes por nuevos.
Argumentos
Retorna
Promesa con los datos actualizados
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.establecer('MegaStar', {xp: 0, nivel: 10}) // retorna una promesa: {MegaStar: {xp: 0, nivel: 10}}
niveles.establecer('MegaStar.xp', 100) // retorna una promesa: {MegaStar: {xp: 100, nivel: 10}}
niveles.establecer('MoDeR', 100) // retorna una promesa: {MegaStar: {xp: 100, nivel: 10}, MoDeR: 100}
niveles.establecer('MoDeR-datos-monedas', 200, "-") // retorna una promesa: {MegaStar: {xp: 100, nivel: 10}, MoDeR: {datos: {monedas: 200}}}
niveles.establecer('MoDeR.datos.banco', 1000) // retorna una promesa:{MegaStar: {xp: 100, nivel: 10}, MoDeR: {datos: {monedas: 200, banco: 1000}}}
niveles.establecer('RatSageM', []) // retorna una promesa: {MegaStar: {xp: 100, nivel: 10}, MoDeR: {datos: {monedas: 200, banco: 1000}}, RatSageM: []}
//Estructura de la base de datos niveles.json:
{
"MegaStar": {
"xp": 100,
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200,
"banco": 1000
}
},
"RatSageM": []
}
### size
size()
Este metodo te permite obtener el numero de valores(claves/keys) de una base de datos.
Argumentos
Ninguno
Retorna
Retorna el numero de valores de la base de datos(claves/keys).
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
let length = niveles.size()
console.log(length) //Esto retorna 3 ya que solo hemos agregado 3 valores(claves): MegaStar, MoDeR y RatSageM
### obtener
obtener(clave, clave_split)
Este metodo te permite obtener los datos(valores) de una propiedad especifica.
Argumentos
Retorna
Promesa con los datos que se obtuvo.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.obtener('MegaStar') // retorna promesa: {xp: 100, nivel: 10}
niveles.obtener('MegaStar.nivel') // retorna promesa: 10
niveles.obtener('MoDeR-datos-banco', "-") // retorna promesa: 1000
### tiene
tiene(clave, clave_split)
Este metodo te permite verificar si existe una propiedad especifica.
Argumentos
Retorna
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.tiene('MegaStar') // retorna true
niveles.tiene('Mario') // retorna false
niveles.tiene('MegaStar.monedas') // retorna false
niveles.tiene('MoDeR-datos-monedas', "-") // retorna true
### eliminar
eliminar(clave, clave_split)
Este metodo te permite eliminar una propiedad especifica.
Argumentos
Retorna
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.eliminar('MegaStar.xp') //retorna true
niveles.eliminar('MoDeR.datos.banco') //retorna true
niveles.eliminar('Mario') //retorna false
niveles.tiene('MoDeR.datos.banco') // retorna false porque lo eliminamos
niveles.tiene('MegaStar.xp') // retorna false porque lo eliminamos
niveles.obtener('MegaStar') // retorna promesa: {nivel: 10}
niveles.obtener('MoDeR-datos', "-") // retorna promesa: {monedas: 200}
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": []
}
### datos
datos()
Este metodo regresa todas las propiedades de la base de datos, en otras palabras todos los datos.
Argumentos
Ninguno
Retorna
Promesa con todos los datos.
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.datos().then(n => {
console.log(n)
})
//console.log(n)
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 100
}
},
"RatSageM": []
}
### push
push(clave, valor, clave_split)
Este metodo te permite agregar un elemento a un array.
Argumentos
Retorna
Promesa con el array actualizado.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.push('RatSageM', 'manzana') // retorna promesa: ["manzana"]
niveles.establecer('MGstar', {items: ["platano"]})
//retorna promesa: {MegaStar: {nivel: 10}, MoDeR: {datos: {monedas: 100}}, RatSageM: ["manzana"], Mgstar: {items: ["platano"]}}
niveles.push('MGstar', 'sandia') // retorna Error: {type: "ARRAY NO EXISTENTE", mensaje: "El valor de la propiedad MGstar no es un array"}
niveles.push('MGstar.items', 'sandia') // retorna promesa: ["platano", "sandia"]
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": ["manzana"],
"MGstar": {
"items": ["platano", "sandia"]
}
}
### extract
extract(clave, valor, clave_split)
Este metodo te permite remover un elemento especifico de un array.
Argumentos
Retorna
Promesa con el array actualizado.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.extract('MGstar', 'platano') // retorna Error: {type: "ARRAY NO EXISTENTE", mensaje: "El valor de la propiedad MGstar no es un array"}
niveles.extract('RatSageM', 'manzana') // retorna promesa: []
niveles.extract('MGstar.items', 'platano') // retorna promesa: ["sandia"]
niveles.extract('MGstar.items', 'durazno') // retorna Error: {type: "ITEM NO EXISTENTE", mensaje: "El item durazno no existe en el array items"}
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": [],
"MGstar": {
"items": ["sandia"]
}
}
### sumar
sumar(clave, valor, clave_split)
Este metodo te permite sumar una cantidad especifica a una propiedad, el valor propiedad debe ser un numero.
Argumentos
Retorna
Promesa con el valor actualizado.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.establecer('Nelson', 20)
//retorna promesa: {MegaStar: {nivel: 10}, MoDeR: {datos: {monedas: 200}}, RatSageM: [], MGstar: {items: ["sandia"]}, Nelson: 20}
niveles.sumar('Nelson', 25) //retorna promesa: 45
niveles.establecer('Sun.datos.monedas', 10)
//retorna promesa: {MegaStar: {nivel: 10}, MoDeR: {datos: {monedas: 200}}, RatSageM: [], MGstar: {items: ["sandia"]}, Nelson: 20, Sun: {datos: {monedas: 10}}}
niveles.sumar('Sun.datos', 90) //retorna Error: {type: "NUMERO NO EXISTENTE", mensaje: "El valor de la propiedad datos no es un numero"}
niveles.sumar('Sun-datos-monedas', 90, "-") // retorna promesa: 100
console.log(niveles.size()) //Esto imprime 6 ya que hemos agregado 6 valores(claves): MegaStar, MoDeR, RatSageM, MGstar, Nelson y Sun
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": [],
"MGstar": {
"items": ["sandia"]
},
"Nelson": 45,
"Sun": {
"datos": {
"monedas": 100
}
}
}
### restar
restar(clave, valor, clave_split)
Este metodo te permite restar una cantidad especifica a una propiedad, el valor propiedad debe ser un numero.
Argumentos
Retorna
Promesa con el valor actualizado.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.restar('Nelson', 40) //retorna promesa: 5
niveles.restar('Sun.datos', 100) //retorna Error: {type: "NUMERO NO EXISTENTE", mensaje: "El valor de la propiedad datos no es un numero"}
niveles.restar('Sun-datos-monedas', 100, "-") // retorna promesa: 0
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": [],
"MGstar": {
"items": ["sandia"]
},
"Nelson": 5,
"Sun": {
"datos": {
"monedas": 0
}
}
}
### keys
keys(clave, clave_split)
Este metodo retorna un array con todos los nombres(keys) de las propiedades del objeto que especificaste.
Argumentos
clave (opcional): La clave es opcional, en el caso de que quieras obtener los nombres(keys) de un objeto especifico, puedes colocar el nombre del objecto. Si quieres obtener los nombres(keys) de un objecto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) En el caso de que directamente quieras obtener los nombres(keys) de una base de datos, no pongas ningun valor.
clave_split (opcional): Este argumento es opcional, aqui puedes especificar el signo que se usara para acceder a propiedades anidadas en el argumento clave (por default es el .)
Retorna
Promesa con un array que contiene los nombres de las propiedades(keys).
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.keys() //retorna promesa: ["MegaStar", "MoDeR", "RatSageM", "MGstar", "Nelson", "Sun"]
niveles.keys('MegaStar.nivel') //retorna Error: {type: "OBJETO NO EXISTENTE", mensaje: "El valor de la propiedad nivel no es un objeto"}
niveles.keys('Sun.datos') ///retorna promesa: ["monedas"]
### values
values(clave, clave_split)
Este metodo retorna un array con todos los valores de las propiedades del objeto que especificaste.
Argumentos
clave (opcional): La clave es opcional, en el caso de que quieras obtener los valores de un objeto especifico, puedes colocar el nombre del objecto. Si quieres obtener los valores de un objecto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) En el caso de que directamente quieras obtener los valores de una base de datos, no pongas ningun valor.
clave_split (opcional): Este argumento es opcional, aqui puedes especificar el signo que se usara para acceder a propiedades anidadas en el argumento clave (por default es el .)
Retorna
Promesa con un array que contiene los valores de las propiedades.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
niveles.values() //retorna promesa: [{nivel: 10}, {datos: {monedas: 200}}, [], {items: ["sandia"]}, {datos: {monedas:0}}]
niveles.values('MegaStar.nivel') //retorna Error: {type: "OBJETO NO EXISTENTE", mensaje: "El valor de la propiedad nivel no es un objeto"}
niveles.values('Sun.datos') ///retorna promesa: [{monedas: 0}]
### purgeall
purgeall()
Este metodo te permite eliminar todos los datos de una base de datos especifica.
Argumentos
Ninguno
Retorna
Ejemplos
const db = require('megadb');
let niveles = new db.crearDB('niveles');
//Estructura actual de la base de datos niveles.json:
{
"MegaStar": {
"nivel": 10
},
"MoDeR": {
"datos": {
"monedas": 200
}
},
"RatSageM": [],
"MGstar": {
"items": ["sandia"]
},
"Nelson": 5,
"Sun": {
"datos": {
"monedas": 0
}
}
}
let status = niveles.purgeall()
console.log(status) //Esto retorna true
//Estructura actual de la base de datos niveles.json:
{} //No contiene nada ya que se elimino todo
### ordenar
ordenar(clave, valor, clave_split)
Este metodo te permite ordenar las propiedad de un objeto de forma descendente, ten en cuenta que el valor de las propiedades que quieras ordenar debe ser un numero.
Argumentos
clave: La clave puede recibir dos tipos de valores, en el caso de que quieras ordenar las propiedades de un objeto especifico, puedes colocar el nombre del objecto. Si quieres ordenar las propiedades de un objecto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que directamente quieras ordenar las propiedades de una base de datos.
valor: El valor tambien puede recibir dos tipos de valores, en el caso de que las propiedades del objeto que quieres ordenar tambien sean objetos y mantengan propiedades, puedes colocar el nombre de la propiedad que se usara como referencia para ordenarlos de forma descendente, en el caso de que estas propiedades tambien sean objetos, puedes usar el . seguido del nombre del objeto y la propiedad que quieres ordenar (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que el valor de la propiedad con la cual lo vas a ordenar no sea un objeto.
clave_split (opcional): Este argumento es opcional, aqui puedes especificar el signo que se usara para acceder a propiedades anidadas en el argumento clave y el argumento valor (por default es el .)
Retorna
Promesa con un array, este array contiene las propiedades ordenadas de forma descendente.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
//ejemplo_1
const db = require('megadb');
let economia = new db.crearDB('guild_1', 'economia_db');
economia.establecer('MegaStar', 100)
economia.establecer('MoDeR', 40)
economia.establecer('ratsagem', 320)
/*
Estructura actual de la base de datos guild_1.json:
{
"MegaStar": 100,
"MoDeR": 40,
"ratsagem": 320
}
*/
economia.ordenar(false, false)
//retorna promesa: [{clave: 'ratsagem', valor: 320}, {clave: 'MegaStar', valor: 100}, {clave: 'MoDeR', valor: 40}]
/////////////////////////////////////////////////////
//ejemplo_2
const db = require('megadb');
let economia = new db.crearDB('guild_1', 'economia_db');
economia.establecer('MegaStar', {monedas: 100})
economia.establecer('MoDeR', {monedas: 40})
economia.establecer('ratsagem', {monedas: 320})
/*
Estructura actual de la base de datos guild_1.json:
{
"MegaStar": {
"monedas": 100
},
"MoDeR": {
"monedas": 40
},
"ratsagem": {
"monedas": 320
}
}
*/
economia.ordenar(false, "monedas")
//retorna promesa: [{clave: 'ratsagem', valor: {monedas: 320)}, {clave: 'MegaStar', valor: {monedas: 100}}, {clave: 'MoDeR', valor: {monedas: 40)}]
/////////////////////////////////////////////////////
//ejemplo_3
const db = require('megadb');
let economia = new db.crearDB('guild_2', 'economia_db');
let usuarios_data = {
'MegaStar': 100,
'MoDeR': 40,
'ratsagem': 320
}
economia.establecer('usuarios', usuarios_data)
/*
Estructura actual de la base de datos guild_2.json:
{
"usuarios": {
"MegaStar": 100
"MoDeR": 40
"ratsagem": 320
}
}
*/
economia.ordenar("usuarios", false)
//retorna promesa: [{clave: 'ratsagem', valor: 320}, {clave: 'MegaStar', valor: 100}, {clave: 'MoDeR', valor: 40}]
/////////////////////////////////////////////////////
//ejemplo_4
const db = require('megadb');
let economia = new db.crearDB('guild_3', 'economia_db');
let usuarios_data = {
"MegaStar": {monedas: 50},
"MoDeR": {monedas: 67},
"ratsagem": {monedas: 4}
}
economia.establecer('usuarios', usuarios_data)
/*
Estructura actual de la base de datos guild_3.json:
{
"usuarios": {
"MegaStar": {
"monedas": 50
},
"MoDeR": {
"monedas": 67
},
"ratsagem": {
"monedas": 4
}
}
}
*/
economia.ordenar("usuarios", "monedas")
//retorna promesa: [{clave: 'MoDeR', valor: {monedas: 67)}, {clave: 'MegaStar', valor: {monedas: 50}}, {clave: 'ratsagem', valor: {monedas: 4)}]
/////////////////////////////////////////////////////
//ejemplo_5
const db = require('megadb');
let economia = new db.crearDB('guild_4', 'economia_db');
let usuarios = {
"megastar": {monedas: 10, medallas: 15},
"moder": {monedas: 50, medallas: 20},
"ratsagem": {monedas: 25, medallas: 5}
}
economia.establecer('servidores.datos', usuarios)
/*
Estructura actual de la base de datos guild_4.json:
{
'servidores': {
'datos': {
'megastar': {
'monedas': 10,
'medallas': 15
},
'moder': {
'monedas': 50,
'medallas': 20
},
'ratsagem': {
'monedas': 25,
'medallas': 5
}
}
}
}
*/
economia.ordenar('servidores.datos', "medallas")
/*
retorna promesa:
[
{clave: 'moder', valor: {monedas: 50, medallas: 20}},
{clave: 'MegaStar', valor: {monedas: 10, medallas: 15}},
{clave: 'ratsagem', valor: {monedas: 25, medallas: 5}}
]
*/
/////////////////////////////////////////////////////
//ejemplo_6
const db = require('megadb');
let economia = new db.crearDB('guild_5', 'economia_db');
let usuarios = {
"megastar": {stats: {monedas: 10}},
"moder": {stats: {monedas: 50}},
"ratsagem": {stats: {monedas: 25}}
}
economia.establecer('servidores.datos', usuarios)
/*
Estructura actual de la base de datos guild_5.json:
{
'servidores': {
'datos': {
'megastar': {
'stats': {
'monedas': 10
}
},
'moder': {
'stats': {
'monedas': 50
}
},
'ratsagem': {
'stats': {
'monedas': 25
}
}
}
}
}
*/
economia.ordenar('servidores-datos', "stats-monedas", "-") //Estoy usando el - como separador en lugar del .
/*
retorna promesa:
[
{clave: 'moder', valor: {stats: {monedas: 50}}},
{clave: 'ratsagem', valor: {stats: {monedas: 25}}},
{clave: 'megastar', valor: {stats: {monedas: 10}}}
]
*/
### random
random(clave, cantidad, clave_split)
Este metodo te permite obtener una cantidad especifica de propiedades aleatoriamente (random), nunca se repetiran.
Argumentos
clave: La clave puede recibir dos tipos de valores, en el caso de que quieras obtener aleatoriamente una cantidad especifica de propiedades de un objeto, puedes colocar el nombre del objecto. Si quieres obtener aleatoriamente una cantidad especifica de propiedades de un objecto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que tengas propiedades que no sean objetos anidados.
cantidad: Aqui deberas de poner la cantidad(un numero) de propiedades random que se obtendra del objeto que especificaste en el argumento clave.
clave_split (opcional): Este argumento es opcional, aqui puedes especificar el signo que se usara para acceder a propiedades anidadas en el argumento clave (por default es el .)
Retorna
Promesa con un array, este array contiene las propiedades que fueron seleccionadas aleatoriamente.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
//ejemplo_1
const db = require('megadb');
let giveaway = new db.crearDB('giveaway');
giveaway.establecer('MegaStar', {ganadas: 0})
giveaway.establecer('MoDeR', {ganadas: 0})
giveaway.establecer('ratsagem', {ganadas: 0})
giveaway.establecer('Sun', {ganadas: 0})
giveaway.establecer('MGstar', {ganadas: 0})
giveaway.establecer('ruru', {ganadas: 0})
//Estructura actual de la base de datos giveaway.json:
{
"MegaStar": {
"ganadas": 0
},
"MoDeR": {
"ganadas": 0
},
"ratsagem": {
"ganadas": 0
},
"pedro": {
"ganadas": 0
},
"MGstar": {
"ganadas": 0
},
"ruru": {
"ganadas": 0
}
}
giveaway.random(false, 4)
//retorna una promesa (las propiedades son aleatorias, esto es solo un ejemplo):
/*
[
{clave: MegaStar, valor: {ganadas: 0}},
{clave: ruru, valor: {ganadas: 0}},
{clave: pedro, valor: {ganadas: 0}},
{clave: MoDeR, valor: {ganadas: 0}}
]
*/
/////////////////////////////////////////////////////
//ejemplo_2
const db = require('megadb');
let giveaway = new db.crearDB('giveaway1');
let usuarios = {
"12132131231242343": {ganadas: 0},
"12132454545454543": {ganadas: 2},
"13243242342342343": {ganadas: 1},
"12138786867868683": {ganadas: 6},
"18989896797978973": {ganadas: 0},
"12121212135345346": {ganadas: 5}
}
giveaway.establecer('users_ID', usuarios)
//Estructura actual de la base de datos giveaway1.json:
{
"users_ID": {
"12132131231242343": {
"ganadas": 0
},
"12132454545454543": {
"ganadas": 2
},
"13243242342342343": {
"ganadas": 1
},
"12138786867868683": {
"ganadas": 6
},
"18989896797978973": {
"ganadas": 0
},
"12121212135345346": {
"ganadas": 5
}
}
}
giveaway.random("users_ID", 3)
//retorna una promesa (las propiedades son aleatorias, esto es solo un ejemplo):
/*
[
{clave: 13243242342342343, valor: {ganadas: 1}},
{clave: 12138786867868683, valor: {ganadas: 6}},
{clave: 12121212135345346, valor: {ganadas: 5}}
]
*/
### existeDB
existeDB(nombre_db)
Este metodo te permite verificar si existe una especifica base de datos en la carpeta mega_databases o en sub directorio.
Argumentos
Retorna
Ejemplos
/*
Nuestra estructura de dbs deberia ser esta:
[–] node_modules
[+] mega_databases
[+] economia_db
- guild_1.json
- guild_2.json
- guild_3.json
- guild_4.json
- guild_5.json
- niveles.json
- giveaway.json
- giveaway1.json
*/
//ejemplo_1 usare un sub directorio
const db = require("megadb");
let economia = new db.crearDB("guild_1", "economia_db") //Estoy obteniendo el archivo guild_1.json que esta dentro del sub directorio "economia_db"
console.log(economia.existeDB("guild_2")) //retorna true
console.log(economia.existeDB("guild_5")) //retorna true
console.log(economia.existeDB("guild_8")) //retorna false
console.log(economia.existeDB("niveles")) //retorna false
//ejemplo_2 sin usar sub directorio
const db = require("megadb");
let niveles = new db.crearDB("niveles") //Estoy obteniendo el archivo niveles.json que esta dentro de la carpeta mega_databases
console.log(niveles.existeDB("giveaway")) //retorna true
console.log(niveles.existeDB("giveaway1")) //retorna true
console.log(niveles.existeDB("guild_8")) //retorna false
console.log(niveles.existeDB("mydb")) //retorna false
### find
find(clave, callback(), clave_split)
Este metodo retorna el valor de la primera propiedad que cumpla la condicion del callback, si no encuentra nada regresara undefined. Es similar al Array.find
Argumentos
clave: La clave puede recibir dos tipos de valores, en el caso de que quieras buscar en las propiedades de un objeto especifico, puedes colocar el nombre del objecto. Si quieres buscar en las propiedades de un objeto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que directamente quieras buscar en las propiedades de una base de datos.
callback(valor_actual, clave_actual) : Aqui deberas de poner la funcion que se ejecutara o evaluara sobre cada elemento iterado del objeto que especificaste en el argumento clave, el callback puede recibir 2 argumentos:
valor_actual (opcional): Aqui se mostrara el valor del elemento que se esta procesando en ese momento.
clave_actual (opcional): Aqui se mostrara la clave del elemento que se esta procesando en ese momento.
Retorna
Esto retornara una promesa con el valor de la primera propiedad que cumpla la condicion del callback, de lo contrario retornara undefined.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
//ejemplo_1
const db = require("megadb");
let escuela = new db.crearDB("escuela")
escuela.establecer('Mario', {edad: 15, apellido: "garcia"})
escuela.establecer('Pedro', {edad: 12, apellido: "rojas"})
escuela.establecer('Juan', {edad: 10, apellido: "perez"})
escuela.establecer('Jair', {edad: 16, apellido: "gonzales"})
/* Estructura actual de la base de datos escuela.json:
{
"Mario": {
"edad: 15,
"apellido: "garcia"
},
"Pedro": {
"edad: 12,
"apellido: "rojas"
},
"Juan": {
"edad: 10,
"apellido: "perez"
},
"Jair": {
"edad: 16,
"apellido: "gonzales"
}
}
*/
escuela.find(false, (v) => v.edad == 16).then(nuevos => { //v es el elemento que se esta procesando en ese momento
/* Ahora nuevos debera de contener esto:
{
"edad": "16",
"apellido": "gonzales"
}
*/
if(nuevos == undefined) return console.log("Ningun alumno tiene 16 años")
return console.log(`El alumno ${nuevos.apellido} tiene ${nuevos.edad} años!`)
})
//Esto da como resultado: "El alumno gonzales tiene 16 años!"
/////////////////////////////////////////////////////
//ejemplo_2
const db = require("megadb");
let registros = new db.crearDB("registros")
let registrados = {
"ID_1": {
"username": "MegaStar",
"password": "xxxxxxxx",
"age": 20
},
"ID_2": {
"username": "MoDeR",
"password": "aaaaaaaa",
"age": 19
},
"ID_3": {
"username": "RatSageM",
"password": "cccccccc",
"age": 18
}
}
registros.establecer('usuarios', registrados)
/* Estructura actual de la base de datos registros.json:
{
"usuarios": {
"ID_1": {
"username": "MegaStar",
"password": "xxxxxxxx",
"edad": 20
},
"ID_2": {
"username": "MoDeR",
"password": "aaaaaaaa",
"edad": 19
},
"ID_3": {
"username": "RatSageM",
"password": "cccccccc",
"edad": 18
}
}
}
*/
registros.find("usuarios", (v) => v.username == "MegaStar").then(usuario => { //v es el elemento del objeto "usuarios" que se esta procesando en ese momento
/* Ahora usuario debera de contener esto:
{
"username": "MegaStar",
"password": "xxxxxxxx",
"edad": 20
}
*/
if(usuario == undefined) return console.log("No existe este usuario.")
let nombre = usuario.username
let contra = usuario.password
let edad = usuario.edad
return console.log(`Datos, username: ${nombre}, contraseña: ${contra}, edad: ${edad}`)
})
//Esto da como resultado: "Datos, username: MegaStar, contraseña: xxxxxxxx, edad: 20"
### filter
filter(clave, callback(), clave_split)
Este metodo retorna un objeto con todas las propiedades que cumplan la condicion del callback, si no encuentra nada regresara undefined. Es similar al Array.filter solo que en vez de regresar un nuevo array, regresa un nuevo objeto.
Argumentos
clave: La clave puede recibir dos tipos de valores, en el caso de que quieras buscar en las propiedades de un objeto especifico, puedes colocar el nombre del objecto. Si quieres buscar en las propiedades de un objeto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que directamente quieras buscar en las propiedades de una base de datos.
callback(valor_actual, clave_actual): Aqui deberas de poner la funcion que se ejecutara o evaluara sobre cada elemento iterado del objeto que especificaste en el argumento clave, el callback puede recibir 2 argumentos:
valor_actual (opcional): Aqui se mostrara el valor del elemento que se esta procesando en ese momento.
clave_actual (opcional): Aqui se mostrara la clave del elemento que se esta procesando en ese momento.
Retorna
Esto retornara una promesa con un objeto que contiene todas las propiedades que cumplan la condicion del callback, de lo contrario retornara undefined.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
//ejemplo_1
const db = require("megadb");
let seleccion = new db.crearDB("seleccion")
seleccion.establecer('Mario', 18)
seleccion.establecer('Pedro', 20)
seleccion.establecer('Juan', 12)
seleccion.establecer('Jair', 13)
seleccion.establecer('Steve', 16)
seleccion.establecer('Axel', 10)
/* Estructura actual de la base de datos seleccion.json:
{
"Mario": 18,
"Pedro": 20,
"Juan": 12,
"Jair": 13,
"Steve": 16,
"Axel": 10
}
*/
seleccion.filter(false, (v) => v > 15).then(nuevos => { //Estoy especificando que el valor del elemento que se esta procesando sea mayor a 15
/* Ahora nuevos debera de contener este objeto:
{
"Mario": 18,
"Pedro": 20,
"Steve": 16
}
*/
if(nuevos == undefined) return console.log("Ningun jugador tiene mas de 15 años")
let jugadores = []
for(var key in nuevos) {
jugadores.push(`Nombre: ${key}, edad: ${nuevos[key]}`)
}
return console.log(jugadores.join("\n"))
})
/*Esto da como resultado:
Nombre: Mario, edad: 18
Nombre: Pedro, edad: 20
Nombre: Steve, edad: 16
*/
/////////////////////////////////////////////////////
//ejemplo_2
const db = require("megadb");
let registros2 = new db.crearDB("registros2")
let registrados = {
"ID_1": {
"username": "MegaStar",
"password": "xxxxxxxx",
"lenguaje": "javascript"
"age": 20
},
"ID_2": {
"username": "MoDeR",
"password": "aaaaaaaa",
"lenguaje": "javascript"
"age": 19
},
"ID_3": {
"username": "RatSageM",
"password": "cccccccc",
"lenguaje": "c++"
"age": 18
}
}
registros2.establecer('users', registrados)
/* Estructura actual de la base de datos registros2.json:
{
"users": {
"ID_1": {
"username": "MegaStar",
"password": "xxxxxxxx",
"lenguaje": "javascript"
"edad": 20
},
"ID_2": {
"username": "MoDeR",
"password": "aaaaaaaa",
"lenguaje": "javascript"
"edad": 19
},
"ID_3": {
"username": "RatSageM",
"password": "cccccccc",
"lenguaje": "c++"
"edad": 18
}
}
}
*/
registros2.filter("users", (v) => v.lenguaje == "javascript").then(usuarios => {
/* Ahora usuarios debera de contener este objeto:
{
"ID_1": {
"username": "MegaStar",
"password": "xxxxxxxx",
"lenguaje": "javascript"
"edad": 20
},
"ID_2": {
"username": "MoDeR",
"password": "aaaaaaaa",
"lenguaje": "javascript"
"edad": 19
}
}
*/
if(usuarios == undefined) return console.log("Ningun usuario sabe javascript.")
let lista = []
for(var key in usuarios) {
let nombre = usuarios[key].username
let edad = usuarios[key].edad
let lenguaje = usuarios[key].lenguaje
lista.push(`[${key}] username: ${nombre}, edad: ${edad}, lenguaje: ${lenguaje}`)
}
return console.log(lista.join("\n"))
})
/*Esto da como resultado:
[ID_1] username: MegaStar, edad: 20, lenguaje: javascript
[ID_2] username: MoDeR, edad: 18, lenguaje: javascript
*/
### map
map(clave, callback(), clave_split)
Este metodo retorna un array con los resultados de la condicion que se especifico en el callback. Es similar al Array.map
Argumentos
clave: La clave puede recibir dos tipos de valores, en el caso de que quieras buscar en las propiedades de un objeto especifico, puedes colocar el nombre del objecto. Si quieres buscar en las propiedades de un objeto anidado, puedes usar el . seguido del nombre del objeto anidado (el . es un signo por default, puedes cambiarlo en clave_split) Puedes usar false en caso de que directamente quieras buscar en las propiedades de una base de datos.
callback(valor_actual, clave_actual): Aqui deberas de poner la funcion que se ejecutara o evaluara sobre cada elemento iterado del objeto que especificaste en el argumento clave, el callback puede recibir 2 argumentos:
valor_actual (opcional): Aqui se mostrara el valor del elemento que se esta procesando en ese momento.
clave_actual (opcional): Aqui se mostrara la clave del elemento que se esta procesando en ese momento.
Retorna
Esto retornara una promesa con un array que contiene todos los resultados que se especifico en el callback.
Error
En caso de que ocurra un error, esto regresara un objeto con el error descriptivo (puedes obtenerlo con un .catch(error => )) Click aqui para ver los tipos de errores
Ejemplos
//ejemplo_1
const db = require("megadb");
let puntaje = new db.crearDB("puntajes")
puntaje.establecer('Mario', 2)
puntaje.establecer('Pedro', 4)
puntaje.establecer('Juan', 5)
puntaje.establecer('Jair', 6)
/* Estructura actual de la base de datos puntajes.json:
{
"Mario": 2,
"Pedro": 4,
"Juan": 5,
"Jair": 6
}
*/
puntaje.map(false, (v, key) => `Usuario: ${key}, puntaje: ${v*2}`).then(datos => { //v toma el valor del elemento que se esta procesando en ese momento, y key toma la clave del elemento que se esta procesando en ese momento
/* Ahora datos debera de contener este array:
["Usuario: Mario, puntaje: 4",
"Usuario: Pedro, puntaje: 8",
"Usuario: Juan, puntaje: 10",
"Usuario: Jair, puntaje: 12"]
*/
return console.log(datos.join("\n"))
})
/*Esto da como resultado:
Usuario: Mario, puntaje: 4
Usuario: Pedro, puntaje: 8
Usuario: Juan, puntaje: 10
Usuario: Jair, puntaje: 12
*/
/////////////////////////////////////////////////////
//ejemplo_2
const db = require("megadb");
let users_lb = new db.crearDB("userslb")
let usuarios = {
"servidor_1": {
"MegaStar": 8,
"MoDeR": 6,
"Mario": 1,
"Pedro": 8
},
"servidor_2": {
"Juan": 4,
"RatSageM": 5,
"Steve": 7
},
"servidor:3": {
"reDoM": 1,
"Jack": 4
}
}
users_lb.establecer('leaderboard', usuarios)
/* Estructura actual de la base de datos userslb.json:
{
"leaderboard": {
"servidor_1": {
"MegaStar": 8,
"MoDeR": 6,
"Mario": 1,
"Pedro": 8
},
"servidor_2": {
"Juan": 4,
"RatSageM": 5,
"Steve": 7
},
"servidor_3": {
"reDoM": 1,
"Jack": 4
}
}
}
*/
users_lb.map("leaderboard.servidor_1", (v, key) => `Usuario: ${key} | puntos: ${v*3}`).then(usuarios => {
/* Ahora usuarios debera de contener este array:
["Usuario: MegaStar | puntos: 24",
"Usuario: MoDeR | puntos: 18",
"Usuario: Mario | puntos: 3",
"Usuario: Pedro | puntos: 24"]
*/
return console.log(usuarios.join("\n"))
})
/*Esto da como resultado:
Usuario: MegaStar | puntos: 24
Usuario: MoDeR | puntos: 18
Usuario: Mario | puntos: 3
Usuario: Pedro | puntos: 24
*/
### convert_megadtbs
convert_megadtbs()
Este metodo es especial, usalo solo cuando quieras adaptar tu base de datos del npm mega-dtbs al megadb. Para adaptar tu base de datos del mega-dtbs a megadb, debes de poner el nombre "mega_db" en el constructor crearDB. Asegurate de que el archivo mega_db.json se encuentre dentro de la carpeta mega_databases.
Argumentos
Ninguno.
Retorna
Nada.
Demostracion
Ejemplos
const db = require("megadb");
let megadb = new db.crearDB("mega_db")
megadb.convert_megadtbs()
## Errores
Existen 6 tipos de errores que te pueden salir en el .catch, esto retorna un objeto que contiene 2 propiedades:
Tipos de errores:
1: {type: "DATABASE NO EXISTENTE", mensaje: "[{nombre_metodo}] La base de datos {nombre_database} no existe: {ruta_directorio}"}
2: {type: "PROPIEDAD NO EXISTENTE",mensaje: "[{nombre_metodo}] No se encontro la propiedad {nombre_propiedad}, base de datos: {nombre_database}"}
3: {type: "NUMERO NO EXISTENTE",mensaje: "[{nombre_metodo}] El valor de la propiedad {nombre_propiedad} no es un numero, base de datos: {nombre_database}"}
4: {type: "ARRAY NO EXISTENTE",mensaje: "[{nombre_metodo}] El valor de la propiedad {nombre_propiedad} no es un array, base de datos: {nombre_database}"}
5: {type: "ITEM NO EXISTENTE",mensaje: "[{nombre_metodo}] El item {elemento} no existe en el array {nombre_array}, base de datos: {nombre_database}"}
6: {type: "OBJETO NO EXISTENTE", mensaje: "[{nombre_metodo}] El valor de la propiedad {nombre_propiedad} no es un objeto, base de datos: {nombre_database}"}
Ejemplos
const db = require("megadb");
let paises = new db.crearDB("paises")
paises.establecer("norte", ["argentina", "brasil", "colombia"]) //retorna promesa: {norte: ["argentina", "brasil", "colombia"]}
paises.extract("norte", "bolivia").then(nuevos => {
console.log(nuevos)
}).catch(error => {
console.log(`error: ${error.type} , mensaje: ${error.mensaje}`)
})
//Esto retorna en el .catch => "error: ITEM NO EXISTENTE , mensaje: [extract] El item bolivia no existe en el array norte, base de datos: paises"
const db = require('megadb');
let estadisticas = new db.crearDB('niveles');
let randomXP = Math.floor(Math.random() * 60) + 1;
if(!estadisticas.tiene('MegaStar')) {
estadisticas.establecer('MegaStar', {xp: 0, nivel: 1});
}
estadisticas.obtener('MegaStar').then(datos => {
if((randomXP + datos.xp) >= 50) {
estadisticas.establecer('MegaStar', {xp: 0, nivel: datos.nivel + 1}).then(nuevos => {
let nuevo_nivel = nuevos['MegaStar'].nivel
console.log(`MegaStar subio al nivel ${nuevo_nivel}!`)
}).catch(err => console.log(err))
}
else{
estadisticas.sumar('MegaStar.xp', randomXP)
}
}).catch(err => console.log(err))
/////////////////////////////////////////////////////
const db = require('megadb');
let escuela = new db.crearDB('alumnos');
escuela.establecer('MegaStar', {edad: 20, profesion: ['programador']});
escuela.establecer('MoDeR', {edad: 18, profesion: ['programador']});
escuela.establecer('RatSageM', {edad: 25, profesion: ['maestro']});
escuela.datos().then(alumnos => {
for(var alumno in alumnos) {
if(alumnos[alumno].profesion.includes('programador')) {
escuela.push(`${alumno}.profesion`, 'javascript');
continue;
}
escuela.eliminar(`${alumno}`)
}
})
//resultado final:
{
"MegaStar": {
"edad": 20,
"profesion": ["programador", "javascript"]
},
"MoDeR": {
"edad": 18,
"profesion": ["programador", "javascript"]
}
}
/////////////////////////////////////////////////////
const db = require('megadb');
let mercado_db = new db.crearDB('mercado');
let nombres = ['manzana', 'melocoton', 'sandia', 'lechuga']
mercado_db.establecer('frutas', nombres); //esto retorna {frutas: ['manzana', 'melocoton', 'sandia', 'lechuga']}
mercado_db.obtener('frutas').then(f => {
for(var x = 0; x < f.length; x++) {
if(f[x] == 'lechuga') {
mercado_db.extract('lechuga').then(nuevas_frutas => {
//esto retorna ['manzana', 'melocoton', 'sandia']
console.log(`La ${f[x]} no es una fruta, acabo de removerlo.`)
}).catch(error => {
console.log(`Ocurrio un error: ${error.type}, mensaje: ${error.mensaje}`)
})
break;
}
}
}).catch(error => {
console.log(error)
})
//resultado final:
{
"frutas": ["manzana", "melocoton", "sandia"]
}
/////////////////////////////////////////////////////
const db = require('megadb');
let economia_db = new db.crearDB('economia')
let usuarios = {
megastar: {monedas: 10, medallas: 15},
moder: {monedas: 50, medallas: 20},
ratsagem: {monedas: 25, medallas: 5}
}
economia_db.establecer('servidor.datos', usuarios)
economia_db.ordenar('servidor.datos', "monedas").then(nuevos => {
let ranking = []
for(var x = 0; x < nuevos.length; x++) {
ranking.push(`rank #${parseInt(x+1)} | usuario: ${nuevos[x].clave} | monedas: ${nuevos[x].valor.monedas} | medallas: ${nuevos[x].valor.medallas}\n`)
}
})
/*
resultado:
rank #1 | usuario: moder | monedas: 50 | medallas: 20
rank #2 | usuario: ratsagem | monedas: 25 | medallas: 5
rank #3 | usuario: megastar | monedas: 10 | medallas: 20
*/
/////////////////////////////////////////////////////
const db = require('megadb');
let login_db = new db.crearDB('login')
let registered_users = {
"Mario": "password1",
"MegaStar": "password2",
"MoDeR": "password3",
"RatSageM": "password4"
}
login_db.establecer('usuarios', registered_users)
/*
Estructura actual de la base de datos login.json:
{
"usuarios": {
"Mario": "password1",
"MegaStar": "password2",
"MoDeR": "password3",
"RatSageM": "password4"
}
}
*/
login_db.keys('usuarios').then(users => {
console.log(`Nombres de los usuarios registrados: ${users.join(", ")}`)
})
//resultado: "Nombres de los usuarios registrados: Mario, MegaStar, MoDeR, RatSageM"
FAQs
base de datos usando JSON
The npm package megadb receives a total of 130 weekly downloads. As such, megadb popularity was classified as not popular.
We found that megadb demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.