【发布时间】:2021-07-25 23:58:22
【问题描述】:
我的数据库被建模为“森林”或一组树。有一些顶级节点可以链接到它下面的多个节点,每个节点都可能链接到它下面的节点。
我想实现一个解析器,它可以找到一棵树并将其删除。这意味着它必须找到一个顶级节点,搜索其子节点,删除它们,然后搜索自己的子节点,等等。我不确定如何使用解析器实现此递归。
这个的递归结构看起来像
function deleteNodes(rootID) {
root = database.find(id: rootID);
if (!root.childrenIDs) return;
database.delete(id: rootID);
root.childrenIDs.map((childId) => deleteNodes(childId));
}
但我不确定这在解析器中如何工作,我的代码结构如下所示:
module.exports {
Query: {...},
Mutation: {
deleteNodes: async (_, args) => {...}
}
}
我如何设计辅助函数或递归调用解析器,或者如果不允许这样做,我该如何执行我想要的?不确定我是否可以直接在解析器内部调用解析器。
【问题讨论】:
-
使用一个命名函数,并像你一样递归调用它。没有理由让
deleteNodes成为箭头函数。
标签: javascript apollo react-apollo apollo-server resolver