A simple json manager like "data base (DB)"
local to your application, very advanced and malleable to use as you want.
- Compatible with several EcmaScript (ES) technologies
- Supports both
"require()"
and"import"
- We now have a new method, the "fetch" method, which works similarly to 'get' but performs a more in-depth search.
- The issue of having to instantiate the 'read' and 'request' events to start the local server via 'hostView' has been fixed.
const { JsonDB } = require("json-db-manager"); // ES5
import { JsonDB } from "json-db-manager"; // ES6
const db = new JsonDB();
You can choose the spacing by placing the number of spaces inside the
JsonDB
class, thedefault being: 0
const db = new JsonDB(2); // Additional spacing
You can also choose between a
json
storing"base64"
or"utf-8"
which is the default.
const db = new JsonDB(0, "utf-8"); // Optional encoding
The third parameter is responsible for managing your
json
file that will be defined in the"path"
method. If there is no file with the listed name, it can create the file automatically if"true"
is passed. The default is"false"
const db = new JsonDB(0, "utf-8", true); // Optional to create file if it doesn't exist
path is the main method that will provide the methods to manipulate your json
file, but it is necessary that the file path is based on the root route of your project.
Pass the "key" that you want to search for, if no parameter is passed it will return your json
file. The get search system is superficial, if you want to search for a "key" that is inside a method it will be necessary to use the fetch
method.
// example json
{
"KeyExample": {"velueExamples": [0, "1", [2, 2.5]]},
"KeyExample1": 3,
}
console.log(db.path("./dir").get())
// db.path("./dir").get("KeyExample") To search for a specific item
{
"KeyExample": {"velueExamples": [0, "1", [2, 2.5]]},
"KeyExample1": 3,
}
- Methods 👈
Pass the "key" of your choice and the "value".
// example json
{}
db.path("./dir").set("key", "value"); // Criando por parametro.
db.path("./dir").set({"key1": "value"}); // Formatação objeto.
db.path("./dir").set({"key2": "value", "key3": "value"}); // Formatação com objetos.
{
"key": "value", // Criando por parametro.
"key1": "value", // Formatação com objeto.
"key2": "value", // Formatação com objetos.
"key3": "value", // Formatação com objetos.
}
- Methods 👈
Its function is to add "value" to the value of "key" if the value is of numeric type.
// example json
{
"test": 120,
}
db.path("./dir").add("key", 50);
{
"test": 170
}
- Methods 👈
Subtracts the specified "value" from the value of "key" if the value is numeric.
// example json
{
"test": 120,
}
db.path("./dir").sub("key", 50);
{
"test": 70
}
- Methods 👈
Pass the "key" you want to delete.
// example json
{
"keyExample": "wow",
"KeyExample1": 8,
}
db.path("./dir").delete("keyExample");
{
//keyExample is deleted
"KeyExample1": 8,
}
- Methods 👈
Clears all json content, leaving it ready for new values.
// example json
{
"test": 120,
}
db.path("./dir").clear();
{} // Empty
- Methods 👈
Pass the "key" to search within the json. By default, everything found with the same "key" will be returned.
// example json
{
"test": 120,
"mm": 60,
"obj": {
"mj": 0,
"se": {
"test": [
{
"mm": 10
},
{
"mm": 11
},
{
"mm": 12
}
]
}
}
}
Returns in an array all the values of the "keys" found. When passing the value of a key in the parameter, that key will be returned if it exists.
console.log(db.path("./dir").fetch("mm").get());
console.log(db.path("./dir").fetch("mm").get(11));
[ 60, 10, 11, 12 ]
[ 11 ]
- Methods 👈
Accepts values as string, number, arrays and object. Changes the value of all "keys" it finds for the key selected in "fetch".
db.path("./dir").fetch("mm").set("20:)");
{
"test": 120,
"mm": "20:)", // set "20:)"
"obj": {
"mj": 0,
"se": {
"test": [
{
"mm": "20:)" // set "20:)"
},
{
"mm": "20:)" // set "20:)"
},
{
"mm": "20:)" // set "20:)"
}
]
}
}
}
- Methods 👈
Its function is to add "value" to the values of "key" if the value is of numeric type.
db.path("./dir").fetch("mm").add(50);
{
"test": 120,
"mm": 110, // add 50
"obj": {
"mj": 0,
"se": {
"test": [
{
"mm": 60 // add 50
},
{
"mm": 61 // add 50
},
{
"mm": 62 // add 50
}
]
}
}
}
- Methods 👈
Its function is to subtract "value" from the values of "key" if the value is of a numeric type.
db.path("./dir").fetch("mm").sub(50);
{
"test": 120,
"mm": 10, // sub 50
"obj": {
"mj": 0,
"se": {
"test": [
{
"mm": -40 // sub 50
},
{
"mm": -41 // sub 50
},
{
"mm": -42 // sub 50
}
]
}
}
}
- Methods 👈
Used to delete "key" from "json file".
db.path("./dir").fetch("mm").clear();
{
"test": 120,
// removed
"obj": {
"mj": 0,
"se": {
"test": [
{}, // removed
{}, // removed
{} // removed
]
}
}
}
- Methods 👈
Use it to manipulate your "json file" however you like.
- obj is the first parameter and provides as an object the methods where the "key" is located.
- keys being the second parameter, providing the "key" that will be manipulated.
Structure: (obj: object, keys: string) => callback(obj, keys);
db.path("./dir").fetch("mm").mapper((obj, keys) => { if(obj[keys] === 12) delete obj[keys] })
{
"test": 120,
"mm": 60,
"obj": {
"mj": 0,
"se": {
"test": [
{
"mm": 10
},
{
"mm": 11
},
{} // deleted
]
}
}
}
- Methods 👈
To create a server with your "json file"
- The
"port"
method is responsible for listing the server port. - The
"update"
method allows when the page is reloaded to update the information based on the "json file". - The
"update"
is optional and the default is"false"
db.path("./test.json").hostView({ port: 3000, update: true })
"hostView" has two methods, "on"
and "start"
.
The "on" method is responsible for performing manipulations on the "read" and "request" events.
The "read"
event is fired when the server is started, the "request"
event is fired every time the server is accessed, such as when reloading the page or opening it for the first time.
{
"settings": {
"port": Number,
"update": Boolean
}
}
- port - Refers to the door chosen by you to the server.
- update - To indicate if the server will be updating the page.
{
"url": String,
"method": String,
"ip": Number
}
-
url - The route used to display
"JSON"
. - method - The requisition method that was made on the server.
-
ip - It is the
"IP"
of the device that accessed the server on the "json file" route.
let num = 1;
const server = db.path("./test.json").hostView({ port: 3000, update: true })
server.on("read", (req) => {
console.log(`Project started.\nPort: ${req.settings.port}\n`);
})
server.on("request", (req) => {
console.log(`Project acessed: ${num} time\nURL acess: "${req.url}"\nAccessed by IP: ${req.ip}`);
num++
})
server.start() // Server initialization
// Your browser | example URL: http://localhost:3000/data
1 {
2 "KeyExample1": 8,
3 }
// Your logs | example
Project started.
Port: 3000
Project acessed: 1 time
URL acess: "/data"
Accessed by IP: 192.168.0.17
To connect other devices to the server, simply be on the same network and use the
"IPv4"
of your project machine along with the"port"
listed.
- Open "cmd" and run
"ipconfig"
. - Look for the numbers in the line that says
"IPv4 Address"
.
# URL in your browser | example
http://192.168.0.22:3000
- Methods 👈