猫鼬的物化路径和猫鼬的重新粉饰可以一起使用吗?

时间:2019-08-19 08:43:30

标签: node.js mongodb rest express mongoose

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

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

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

  2. express-restify-mongoose-为猫鼬模型https://www.npmjs.com/package/express-restify-mongoose

  3. 生成灵活的REST接口

在将所有代码更改为这两种新模式之前,我想确认一下这是否是正确的方法。换句话说,快速评估我是否可以期望这两个软件包在我的树架构/模型上可以完美地协同工作,以及express-restify-mongoose软件包是否将帮助我展示mongoose-mpath软件包定义的特定方法作为REST API:

mongoose-mpath软件包:

  • 为树中的每个节点(父节点和路径)在架构中添加和管理两个字段,以管理树的行为。父项更新后,它将自动更新路径字段。
  • 这是通过在树的模式下通过.pre钩在后台进行的,称为“物化树模式”。
  • 它为物化树添加了特定的get方法,例如getAncestors(),getAllChildren(),getImmediateChildren(),getChildrenTree(),getParent(),级别。

显然,我希望mongoose-mpath提供的这6个get方法也作为REST API公开!

生成REST API正是另一个软件包express-restify-mongoose的工作:

  • 在其文档中,我读到它会为模型生成REST API,例如GET,PUT,POST,DELETE和PATCH
  • 因此,我假设,如果将其用于新的(具体化的)树架构,它将为我提供基本的CRUD REST API。
  • 在幕后,我看到它也设置了各种.pre挂钩等。

我的具体问题:

  • 是否存在添加到我的架构中的这两个程序包以某种方式发生干扰的风险,还是我可以相信它们可以正常工作?
  • 最重要的是,有没有办法让mongoose-mpath软件包(如上所列)定义的6种方法也可以通过表达重新调整生成REST API?
  • 在架构上定义的所有方法(在这种情况下为MPath)会自动发生,还是我需要手动将此类方法的代码插入到Mongoose Restify生成的文件夹,文件和代码中(如果是,在哪里以及如何?)
  • 还有其他替代方案可以满足我的需求吗?我知道周围还有其他REST生成器,但是Mongoose Restify似乎很受欢迎,这可能是有原因的。

1 个答案:

答案 0 :(得分:0)

?我曾经养过Express-restify-猫鼬

是否存在添加到我的架构中的这两个程序包以某种方式发生干扰的风险,还是我可以相信它们可以正常工作?

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

最重要的是,有没有办法让mongoose-mpath包(如上所列)定义的6种方法也可以通过表达重新调整生成REST API?

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

模式中定义的所有方法(在这种情况下为MPath)会自动发生,还是我需要手动将此类方法的代码插入到Mongoose Restify生成的文件夹,文件和代码中(如果是,在哪里以及如何?)

您必须手动执行。 serve返回安装端点的URI,因此您可以使用它来定义其他路由。

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

我什么都不知道,但是也许其他人可以加入!