knex-tree
v1.4.0
Published
Query hierarchical data structures in sql with knex
Downloads
45
Maintainers
Readme
Query hierarchical data structures in sql with knex
🔗 Link
📥 Install
npm install knex-tree
📖 Usage
Example data
| id | parentId | desc | |---|---|---| | 1 | null | I am 1 | | 2 | 1 | I am 2 | | 3 | 1 | I am 3 | | a | 2 | I am a | | b | 2 | I am b |
KnexTree
KnexTree.Constructor()
=> KnexTree
const { KnexTree } = require('knex-tree');
const knex = require('knex');
const tree = new KnexTree({
db: knex({ ... }),
table: 'mytree',
idColumn: 'id',
parentIdColumn: 'parentId',
});
KnexTree.node(id)
=> KnexNode
const node = tree.node(5);
KnexTree.getAllData()
=> Promise<Model[]>
const data = await tree.getAllData();
KnexNode
KnexNode.id
=> id
const id = node.id;
KnexNode.isExist()
=> Promise<boolean>
const isExist = await node.isExist();
KnexNode.getData()
=> Promise<Model | null>
// data is null if the id doesn't exist in the table
const data = await node.getData();
KnexNode.getParentData()
=> Promise<Model | null>
// data is null if parent dosen't exist in the table
const data = await node.getParentData();
KnexNode.getChildrenData(where?)
=> Promise<Model[]>
const data = await node.getChildrenData();
KnexNode.isRoot()
=> Promise<boolean>
// return true if node is root
const data = await node.isRoot();
KnexNode.getPath()
=> Promise<(Model & ITreeLv)[] | null>
// return the path from root to this node
const data = await node.getPath();
KnexNode.hasChild(id)
=> Promise<Model | null>
// data is null if there is no data which match "id = 7" & "parentId = this.id"
const data = await node.hasChild(7);
KnexNode.hasParent(id)
=> Promise<Model | null>
// data is null if there is no data which match "id = 7" & "hasChild(this.id)"
const data = await node.hasParent(7);
KnexNode.hasAncestor(id, maxLevel?)
=> Promise<(Model & ITreeLv) | null>
// data is null if this is no ancestor whose id = 7
const data = await node.hasAncestor(7);
KnexNode.hasDescendant(id, maxLevel?)
=> Promise<(Model & ITreeLv) | null>
// data is null if this is no descendant whose id = 7
const data = await node.hasDescendant(7);
KnexNode.getPathUpTo(id, maxLevel?)
=> Promise<(Model & ITreeLv)[] | null>
// data is null if this is no ancestor whose id = 7
// return the path from this node to the ancestor(id = 7)
const data = await node.getPathUpTo(7);
KnexNode.getPathDownTo(id, maxLevel?)
=> Promise<(Model & ITreeLv)[] | null>
// data is null if this is no descendant whose id = 7
// return the path from this node to the descendant(id = 7)
const data = await node.getPathDownTo(7);
KnexNode.getDescendants(maxLevel?, where?, limit?, offset?)
=> Promise<(Model & ITreeLv)[]>
// return all descendants
let data = await node.getDescendants();
// return all descendants whose TreeLv <= 2
data = await node.getDescendants(2);
🙋♂️ Author
- Github: @a179346
🤝 Contributing
Contributions, issues and feature requests are welcome!Feel free to check issues page.
🌟 Show your support
Give a ⭐️ if this project helped you!
📝 License
Copyright © 2021 a179346. This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator