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

How to extend waterline with custom query methods?

本文关键字:扩展 方法 查询 何使用 自定义      更新时间:2023-09-26

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

例如方法makeItAwesome

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

当然,我可以将此makeItAwesome添加到模型的静态方法中,但是如果我希望其他模型可以重用常见内容怎么办。帆.js或吃水线本身是否有内置的方法,还是我应该自己做?

如果不是,保存这些东西的最佳方法在哪里?它必须是每个模型中需要的单独模块,还是我可以在某个地方扩展每个模型原型一次?

您可以将每个模型上所需的方法放在一个通用的 js 文件中,并使用 lodash 使用这些默认值扩展您的模型。或者只是在定义模型时引用导入的操作。

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

--或--

您可以将默认方法添加到配置/模型.js文件中

--或--

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

--或--

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

引用

  • 模型/控制器原型继承
  • 继承 Sails.js 模型的属性和生命周期功能
  • 自定义蓝图操作
  • 创建服务