打印号码映射到文档而不是ID

问题描述:

我有两个集合NodeEdge打印号码映射到文档而不是ID

Edge我有两个字段sourcetarget存储它们所链接的节点的ID。

节点(包括存储的I node.idedge.sourceedge.target)不是很有可读性,所以我想要做的就是打印组节点和边的集合,但而不是打印它们的ID,我的id要打印的指数从1

开始所以,如果我有3个节点,我的结果应该是

节点集合= {N1,N2,N3}

,如果我有两个边w这里首先是n1和n2和第二之间连接的是n2和n3之间的联系,我要输出

组边=的{E1 =(N1,N2),E2 =(N2,N3)}

如果我不关心改变IDS一些更可读的指标,我可以

edges = edges.map((edge, index) => 'e' + (index + 1) + ' = (' + edge.source + ', ' + edge.target + ')'); 
console.log('Set of edges = {' + edges.join(', ') + '}'); 

打印的边缘,并与

nodes = nodes.map((node, index) => 'n' + (index + 1)); 
console.log('Set of nodes = {' + nodes.join(', ') + '}'); 
节点3210

我的猜测是我必须在打印边缘之前创建节点的哈希映射,所以我确信每个边缘的source-id和target-id将被转换为正确的节点编号/索引。

编辑

节点和边缘是非常简单的

const nodeSchema = new Schema({}); 
const edgeSchema = new Schema({ source: Schema.Types.ObjectId, target: Schema.Types.ObjectId}); 

所以他们并不拥有比自动创建_id和边缘坚持使用节点引用的任何其他信息节点的_id值。

+0

您可以包括例如'Node'和'Edges'在问题的? – guest271314

+0

_“希望它是足够的”_你可以在问题中提供足够的'Node'和'Edges'文本来产生预期的结果{e1 =(n1,n2),e2 =(n2,n3)}?并分享你试图解决的问题? – guest271314

我想这个作品

const hashmap = {}; 

nodes.map((node, idx) => { 
    hashmap[node.id] = 'n' + (idx + 1); 
}); 

nodes = Object.keys(hashmap).map(key => hashmap[key]); 
edges = edges.map((edge, idx) => 'e' + (idx + 1) + '=(' + hashmap[edge.source] + ', ' + hashmap[edge.target] + ')');