npm install json-function
JsonFunction • documentation
Chaining
import JsonFunction from "json-function";
const result = JsonFunction
.where({ completed: false })
.select(["title", "completed"])
.orderBy("title", "DESC")
.limit(2)
.get(data);
or Basic
import JsonFunction from "json-function";
JsonFunction.where({ completed: false });
JsonFunction.select(["title", "completed"]);
JsonFunction.orderBy("title", "DESC");
JsonFunction.limit(2);
const result = JsonFunction.get(data);
or create a query and use it at any time.
const queryTwoIncompleteTasks = JsonFunction
.where({ completed: false })
.select(["title", "completed"])
.limit(2)
.getQuery();
Query usage
JsonFunction.setQuery(queryTwoIncompleteTasks).get(data);
// or
JsonFunction.get(data, { query: queryTwoIncompleteTasks });
Instead of an entire "class", you can use only the methods you need.
innerJoin • documentation
import { innerJoin } from "json-function";
innerJoin(data, data2, "id", "userId");
schema • documentation
import { schema } from "json-function";
schema(data, {
book: {
id: "id",
title: "title"
},
firstname: "user.firstname",
lastname: "user.lastname"
});
Use "callback" for advanced conversions.
schema(data, (sc) => ({
id: "id",
fullName: sc.join("user.firstname", "user.lastname")
}));
Custom separator
schema(data, (sc) => ({
id: "id",
fullName: sc.join("user.firstname", "user.lastname", { separator: "_" })
}));
Use your own special function.
schema(data, (sc) => ({
id: "id",
fullName: sc.custom(
(firstname, lastname) => `${firstname.toUpperCase()} ${lastname.toUpperCase()}`,
"user.firstname",
"user.lastname"
),
}))
Example
schema(data, (sc) => ({
id: "id",
createdAt: sc.custom(
(createdAt) => moment(createdAt).format("DD/MM/YYYY"),
"createdAt",
),
}))
where • documentation
import { where } from "json-function";
// Single
// (completed === false)
where(data, { completed: false });
// Multiple (or)
// (completed === false || userId === 2)
where(data, [{ completed: false }, { userId: 2 }]);
Use "callback" for advanced filter.
// id <= 3
where(data, (wh) => ({
id: wh.lte(3),
}));
Other wh methods.
wh.lte(3) // value <= 3
wh.lt(3) // value < 3
wh.gte(3) // value >= 3
wh.gt(3) // value > 3
wh.between(3,5) // value >= 3 && value <= 5
wh.eq("3") // value == 3
wh.ne("3") // value != 3
wh.in("test") // value.includes("test")
wh.nin("test") // !value.includes("test")
select • documentation
import { select } from "json-function";
// Single
select(data, "title");
// Multiple
select(data, ["title", "completed"]);
limit • documentation
import { limit } from "json-function";
// limit
limit(data, 2);
// limit and Start
limit(data, 2, 2);
orderBy • documentation
import { orderBy } from "json-function";
orderBy(data, "title", "DESC");
toArray • documentation
import { toArray } from "json-function";
// default key "uid"
toArray(data);
// custom key
toArray(data, { key: "_id_" });