【问题标题】:Can Mongoose Materialized Path and Mongoose Restify be used together?Mongoose Materialized Path 和 Mongoose Restify 可以一起使用吗?
【发布时间】:2019-12-24 11:09:54
【问题描述】:

我已经在 Mongoose 中实现了递归树结构的模式/模型。今天,递归树结构使用一组子节点,这些子节点是对同一模式的引用。我还为树上的基本 CRUD 方法构建了一些 REST API。

我现在想通过使用两个独立设计的包来重构我的实现,以更专业的方式完成我需要的工作:

  1. mongoose-mpath - 通过物化路径模式管理我的猫鼬树, https://www.npmjs.com/package/mongoose-mpath

  2. 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


    【解决方案1】:

    ? 我曾经维护 express-restify-mongoose

    添加到我的架构中的这两个包是否存在以某种方式干扰的风险,或者我可以相信它们会优雅地协同工作吗?

    据我所知,他们不应该干预,express-restify-mongoose 不会修补 mongoose 模式。

    最重要的是,有没有办法让 express-restify 也为 mongoose-mpath 包定义的 6 种方法(如上所列)生成 REST API?

    express-restify-mongoose 仅​​支持 mongoose 本身,也许某种形式的中间件或钩子会有所帮助。

    对于架构上定义的所有方法(在本例中为 MPath)是否会自动发生这种情况,或者我是否需要手动将此类方法的代码插入到 Mongoose Restify 生成的文件夹、文件和代码中(如果是,在哪里以及如何?)

    您必须手动完成。 serve 返回挂载端点的 URI,以便您可以使用它来定义其他路由。

    还有其他替代方法可以实现我的需要吗?我知道周围还有其他 REST 生成器,但 Mongoose Restify 似乎很受欢迎,这可能是有原因的。

    我不知道,但也许其他人可以参与进来!

    【讨论】:

    • 感谢您回答我关于 express-restify 的问题。同时,我手动编写了代码来实现我的应用程序的后端 REST API。这些方法在内部使用 Monggose 和 mongoose-mpath API 的组合。不使用诸如 express-restify-mongoose 之类的 API 代码生成器。如果堆栈中有另一个在 Mongoose 之上自动生成方法的包(例如在我的情况下为 mongoose-mpath),则使用 API 生成器虽然通常很好,但价值有限。
    猜你喜欢
    • 2012-12-22
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多