sails.js蓝图覆盖为钩子

时间:2015-07-14 22:31:42

标签: sails.js

前段时间我问如何覆盖sails.js蓝图(CRUD blueprint overriding in sails.js

使用sails.js的v0.11,我们现在有蓝图(它们很棒:))。

是否可以关闭当前蓝图并将其作为挂钩安装新版本? 来自@ sgress454的这个问题评论(https://github.com/balderdashy/sails/pull/2173#issuecomment-54165548)似乎表明它正在/正在进行中,但我找不到任何更具体的内容。

我知道我可以通过创建api / blueprints文件夹来覆盖,但我的用户通过npm安装更容易使用。

1 个答案:

答案 0 :(得分:0)

你是对的,这是可能的。

这实际上是在Sails的核心中发生的事情:https://github.com/balderdashy/sails/tree/master/lib/hooks/blueprints 默认蓝图的加载​​方式与Installable Hook一样。

您可以继续复制MIT许可代码,然后用您自己的蓝图替换actions目录的内容。 之后,更新BlueprintController中的对象index.js以确保它指向您的文件。

最后,所有的魔法都发生在extendControllerMiddleware方法中。您可以看到代码将遍历每个控制器以注入您的蓝图。这里的关键点是将_.defaults的调用替换为_.assign,因为您的sails挂钩将要覆盖默认蓝图,而不是简单地添加它们(如果它们不存在)。