Comparing version 1.7.0 to 1.9.0
78
index.js
@@ -249,2 +249,5 @@ const fs = require('graceful-fs'), | ||
- convert_megadtbs | ||
- keys | ||
- values | ||
- size | ||
@@ -798,2 +801,74 @@ */ | ||
function keys(clave = false, split_object) { //retorna promesa | ||
if(!split_object) split_object = "." | ||
if(typeof split_object != "string") throw new Error(`[ERROR] El signo que se usara para la clave debe ser un string`) | ||
if(clave === false) { | ||
let keys = Object.keys(global_object[this.database_name]) | ||
return Promise.resolve(keys) | ||
} | ||
check_path_object(clave, split_object) | ||
var split_object = clave.split(split_object) | ||
var object_data = global_object[this.database_name] | ||
for(var x in split_object) { | ||
var key = split_object[x] | ||
if(typeof object_data[key] != "undefined") { | ||
if(x == split_object.length-1) { | ||
if(typeof object_data[key] != "object" || Array.isArray(object_data[key])) return Promise.reject(ErrorDesc("OBJETO NO EXISTENTE", `El valor de la propiedad ${key} no es un objeto`)) | ||
let keys_obj = Object.keys(object_data[key]) | ||
return Promise.resolve(keys_obj) | ||
} | ||
object_data = object_data[key] | ||
continue | ||
} | ||
return Promise.reject(ErrorDesc("PROPIEDAD NO EXISTENTE", `No se encontro la propiedad ${key}`)) | ||
} | ||
} | ||
//--------------------------------------------------------------------------------------\\ | ||
//---------------------------------------------------------------------------------------\\ | ||
function values(clave = false, split_object) { //retorna promesa | ||
if(!split_object) split_object = "." | ||
if(typeof split_object != "string") throw new Error(`[ERROR] El signo que se usara para la clave debe ser un string`) | ||
if(clave === false) { | ||
let values = Object.keys(global_object[this.database_name]).map(o => global_object[this.database_name][o]) | ||
return Promise.resolve(values) | ||
} | ||
check_path_object(clave, split_object) | ||
var split_object = clave.split(split_object) | ||
var object_data = global_object[this.database_name] | ||
for(var x in split_object) { | ||
var key = split_object[x] | ||
if(typeof object_data[key] != "undefined") { | ||
if(x == split_object.length-1) { | ||
if(typeof object_data[key] != "object" || Array.isArray(object_data[key])) return Promise.reject(ErrorDesc("OBJETO NO EXISTENTE", `El valor de la propiedad ${key} no es un objeto`)) | ||
let values_obj = Object.keys(object_data[key]).map(o => object_data[key][o]) | ||
return Promise.resolve(values_obj) | ||
} | ||
object_data = object_data[key] | ||
continue | ||
} | ||
return Promise.reject(ErrorDesc("PROPIEDAD NO EXISTENTE", `No se encontro la propiedad ${key}`)) | ||
} | ||
} | ||
//--------------------------------------------------------------------------------------\\ | ||
//---------------------------------------------------------------------------------------\\ | ||
function size() { //retorna promesa | ||
return Object.keys(global_object[this.database_name]).length | ||
} | ||
//--------------------------------------------------------------------------------------\\ | ||
//---------------------------------------------------------------------------------------\\ | ||
crearDB.prototype.existeDB = existeDB | ||
@@ -813,1 +888,4 @@ crearDB.prototype.establecer = establecer | ||
crearDB.prototype.convert_megadtbs = convert_megadtbs | ||
crearDB.prototype.keys = keys | ||
crearDB.prototype.values = values | ||
crearDB.prototype.size = size |
{ | ||
"name": "megadb", | ||
"version": "1.7.0", | ||
"version": "1.9.0", | ||
"description": "base de datos usando JSON", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
158
README.md
@@ -22,2 +22,5 @@ ``` | ||
V1.9.0 | ||
* Se agrego 3 nuevos metodos (size, keys, values) | ||
V1.7.0 | ||
@@ -38,2 +41,3 @@ * Se agregó el metodo purgeall. | ||
* [establecer](#establecer) | ||
* [size](#size) | ||
* [obtener](#obtener) | ||
@@ -47,2 +51,4 @@ * [tiene](#tiene) | ||
* [restar](#restar) | ||
* [keys](#keys) | ||
* [values](#values) | ||
* [purgeall](#purgeall) | ||
@@ -171,2 +177,30 @@ * [ordenar](#ordenar) | ||
<a name="size" /> | ||
### size | ||
```js | ||
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__ | ||
```js | ||
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 | ||
``` | ||
<a name="obtener" /> | ||
@@ -484,2 +518,3 @@ ### obtener | ||
console.log(niveles.size()) //Esto imprime 6 ya que hemos agregado 6 valores(claves): MegaStar, MoDeR, RatSageM, MGstar, Nelson y Sun | ||
@@ -570,2 +605,79 @@ //Estructura actual de la base de datos niveles.json: | ||
<a name="keys" /> | ||
### keys | ||
```js | ||
keys(clave, clave_split) | ||
``` | ||
Este metodo retorna un array con todos los nombres(keys) de las propiedades del objeto que especificaste. | ||
__Argumentos__ | ||
1. 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. | ||
3. 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](#Errores) | ||
__Ejemplos__ | ||
```js | ||
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"] | ||
``` | ||
<a name="values" /> | ||
### values | ||
```js | ||
values(clave, clave_split) | ||
``` | ||
Este metodo retorna un array con todos los valores de las propiedades del objeto que especificaste. | ||
__Argumentos__ | ||
1. 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. | ||
3. 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](#Errores) | ||
__Ejemplos__ | ||
```js | ||
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}] | ||
``` | ||
<a name="purgeall" /> | ||
@@ -637,7 +749,7 @@ ### purgeall | ||
1. clave: La clave puede recibir dos tipos de valores, en el caso de que quieras ordenar las propiedades 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 tengas propiedades que no sean objetos anidados. | ||
1. 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. | ||
2. 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 los valores de las propiedades no sean objetos anidados. | ||
Puedes usar false en caso de que el valor de la propiedad con la cual lo vas a ordenar no sea un objeto. | ||
@@ -1111,3 +1223,3 @@ 3. 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 .) | ||
Existen 5 tipos de errores que te pueden salir en el .catch, esto retorna un objeto que contiene 2 propiedades: | ||
Existen 6 tipos de errores que te pueden salir en el .catch, esto retorna un objeto que contiene 2 propiedades: | ||
@@ -1124,2 +1236,3 @@ 1. type: Aqui se muestra el tipo de error. | ||
5: {type: "ITEM NO EXISTENTE",mensaje: "El item {elemento} no existe en el array {nombre_array}"} | ||
6: {type: "OBJETO NO EXISTENTE", mensaje: "El valor de la propiedad {nombre_propiedad} no es un objeto"} | ||
``` | ||
@@ -1265,2 +1378,39 @@ | ||
*/ | ||
///////////////////////////////////////////////////// | ||
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" | ||
``` |
76866
705
1407