【发布时间】:2019-12-24 11:09:54
【问题描述】:
我已经在 Mongoose 中实现了递归树结构的模式/模型。今天,递归树结构使用一组子节点,这些子节点是对同一模式的引用。我还为树上的基本 CRUD 方法构建了一些 REST API。
我现在想通过使用两个独立设计的包来重构我的实现,以更专业的方式完成我需要的工作:
mongoose-mpath - 通过物化路径模式管理我的猫鼬树, https://www.npmjs.com/package/mongoose-mpath
express-restify-mongoose - 为 mongoose 模型生成灵活的 REST 接口,https://www.npmjs.com/package/express-restify-mongoose
在我将所有代码更改为这两种新模式之前,我想确认一下这是否是正确的方法。换句话说,快速评估我是否可以期望这两个包将在我的树模式/模型上完美地协同工作,以及 express-restify-mongoose 包是否会帮助我公开 mongoose-mpath 包定义的特定方法作为 REST API:
mongoose-mpath 包:
- 为树中的每个节点(父节点和路径)向架构中添加和管理两个字段,以管理树的行为。当父级更新时,它会自动更新路径字段。
- 这发生在幕后,通过树模式上的 .pre 挂钩,称为“物化树模式”。
- 为物化树增加了具体的get方法,如getAncestors()、getAllChildren()、getImmediateChildren()、getChildrenTree()、getParent()、level。
显然,我希望 mongoose-mpath 提供的这 6 个 get 方法也公开为 REST API!
生成 REST API 正是另一个包 express-restify-mongoose 的工作:
- 在其文档中,我读到它为模型生成 REST API,例如 GET、PUT、POST、DELETE、PATCH
- 所以我假设,如果我将它用于我的新(物化)树模式,它会给我这样基本的 CRUD REST API。
- 在封面下,我看到它还设置了各种 .pre 钩子等。
我的具体问题:
- 添加到我的架构中的这两个包是否存在干扰的风险,或者我可以相信它们可以优雅地协同工作?
- 最重要的是,有没有办法让 express-restify 也为 mongoose-mpath 包定义的 6 种方法(如上所列)生成 REST API?
- 对于架构上定义的所有方法(在本例中为 MPath)是否会自动发生这种情况,或者我是否需要手动将此类方法的代码插入到 Mongoose Restify 生成的文件夹、文件和代码中(如果是,在哪里以及如何?)
- 是否有其他替代方法可以满足我的需求?我知道周围还有其他 REST 生成器,但 Mongoose Restify 似乎很受欢迎,这可能是有原因的。
【问题讨论】:
标签: node.js mongodb rest express mongoose