在sails.js中重写的CRUD蓝图

根据sails中这个封闭的问题: https : //github.com/balderdashy/sails/issues/835

CRUD蓝图覆盖 “绝对,这是在v0.10”

我想修改我的sailsjs服务中的蓝图,以允许命名根(消耗在烬中)。 目前,我不得不自定义每个我创build的控制器,而这些控制器大部分都是蓝图中已有的。

我怀疑我现在可以将这些代码从我的控制器中移出,进入一个蓝图覆盖区域,但是我不清楚在哪里放置代码。

任何例子,甚至只是一个指向相关的代码风帆.10回购将不胜感激。

要覆盖Sails v0.10中的蓝图,您需要创build一个api/blueprints文件夹,并在其中添加您的蓝图文件(例如find.jscreate.js等)。 您可以查看Sails蓝图挂钩中默认操作的代码,以便开始使用。

添加自定义蓝图也被支持,但是他们目前不会自动绑定到路由。 如果你创build一个/blueprints/foo.js文件,你可以在你的/config/routes.js文件中绑定一个路由到(例如):

 'GET /myRoute': {blueprint: 'foo'} 

您可以在控制器中添加这些名称的操作来覆盖默认行为

改变摧毁行为

 module.exports = { destroy: function(req,res){ Goal.update({ id: req.param('id') }, { deleted: true }) .exec(function (err, goal) { if (err) return res.json(err, 400); return res.json(goal[0]); }); } } 

可以使用蓝图中的构build,但首先运行策略 。 这些策略可能会validation用户是否已login,是否具有正确的访问权限等。 真的很方便!

在每个模型中,数据存储之前和之后都有可用的callback。 挖掘: http : //sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks

蓝图结果没有可用的默认callback。 但是不要放弃。 仍然可以使用蓝图中的构build,只修改输出。 它可能不是最优雅的解决scheme,但它运作良好。 看看我的“黑客”在这里: 帆蓝图生命周期