1.4.0 • Published 4 years ago
knex-tree v1.4.0
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