如何使用自定义查询方法来扩展水线?

我想创build和使用水线的一些自定义查询方法。

例如方法makeItAwesome

 Article.makeItAwesome({ id: 42 }).exec(function(err, awesomeArticle) { /* ... */ }); 

当然,我可以将这个makeItAwesome添加到模型的静态方法中,但是如果我想要其他模型可重用的常用的东西。 sails.js或waterline本身是否有内置的方法,或者我应该自己做?

如果不是哪里是最好的方法来保持这个东西? 它必须是一个单独的模块,需要在每个模型中,或者我可以在某处扩展每个模型原型?

你可以把你想要的方法放在一个普通的js文件中,并使用lodash来扩展你的模型。 或者在定义模型时简单地引用导入的操作。

module.exports = _.extends(makeItAwsomeDefinition,{thisModelDefinition})

– 要么 –

您可以将默认方法添加到您的config / models.js文件

– 要么 –

如果您只是使用蓝图,您可以创build自定义操作并将其放入api / blueprints中

– 要么 –

我可能会使用一个更简单的方法,就是创build一个服务并将我的自定义方法放在那里。 ModelMethodsService.makeItAwsome( 'MODELNAME',{structOfQueryParams})

参考

  • 模型/控制器原型inheritance
  • inheritanceSails.js模型的属性和生命周期函数
  • 自定义蓝图行动
  • 创build服务