构建有向图数据模型
npm install --save dgraph-store
import { createStore, DGraphStore } from 'dgraph-store'
import { createStore, DGraphStore } from 'dgraph-store'
const data = {
nodes: [{
id: 'A'
},{
id: 'B'
}],
edges: [
{sourceId: 'A', 'targetId': 'B'}
]
}
const store = new DGraphStore(data);
type Node = {
id: String | Number
}
type Edge = {
sourceId: String | Number,
targetId: String | Number
}
默认值:
{
nodeProcessor: node => node,
edgeProcessor: edge => edge,
//缓存部分api计算结果
cache: true
}
可被缓存的 api 列表:
- isDAG
- findCycle
- findAllCycle
- hasCycle
- findAllPath
constructor(data[, options])
构造函数
isRoot(id)
判断指定节点是否无依赖节点
isLeaf(id)
判断指定节点是否无子节点
getNodeList()
获取所有节点 Array<Node>
getEdgeList()
获取所有节点连线列表 Array<Edge>
getNodeMap()
获取节点 Map<key,Node>对象
hasNode(id)
当前节点是否存在
getNode(id)
获取指定节点
getChildren(id)
获取节点下的子节点 返回:Array<Node>
getChildrenIds(id)
作用参考getChildren
返回:Array<String>
getAllChildren(id)
获取节点下的所有子节点 返回:Array<Node>
深度遍历获取所有“子节点”
getAllChildrenIds(id)
作用参考getAllChildren
返回:Array<String>
getParents(id)
获取指定节点的所依赖的节点(父节点) 返回:Array<Node>
getDependentNodes(id)
作用同getParents
getParentIds(id)
作用参考getParents
返回:Array<String>
getDependentIds(id)
作用同getParentIds
getAllParents(id)
获取指定节点的所有依赖的节点(父节点) 返回:Array<Node>
深度遍历获取所有“父节点”
getAllDependentNodes(id)
作用同getAllParents
getAllParentIds(id)
作用参考getAllParents
返回:Array<String>
getAllDependentIds(id)
作用同getAllParentIds
getInDegree(id)
获取指定节点的入度数(父节点数)返回:Number
getOutDegree(id)
获取指定节点的出度数(子节点数)返回:Number
isDAG()
判断当前图是否有向无环图
返回:Boolean
true: 无环图 false:有环图
findCycle(String | Array)
获取指定节点的所有环路 返回:Array<String>
findAllCycle()
获取当前模型下所有环路列表
findAllPath(from: String, to: String)
获取指定开始节点到目标节点的所有可达路径 返回: Array<Array<String>>
hasCycle(id)
判断指定起始顶点下是否存在闭环
hasEdge(sourceId, targetId)
判断指定两节点是否有连线
addNode(node: Array<Node> | Node)
给指定 pid 节点添加子节点
addEdge(edge: Array<Edge> | Edge)
removeNode(id)
removeEdge(sourceId, targetId)
removeAllNode()
toData()
返回模型数据
{
nodes: Array<Node>,
edges: Array<Edge>
}
clone()
返回一个新的模型实例
作用同new DGraphStore(...)