Javascript 如何使用自定义查询方法扩展waterline?

Javascript 如何使用自定义查询方法扩展waterline?,javascript,node.js,orm,sails.js,waterline,Javascript,Node.js,Orm,Sails.js,Waterline,我想为waterline创建和使用一些自定义查询方法 例如,方法makeItAwesome: Article.makeItAwesome({ id: 42 }).exec(function(err, awesomeArticle) { /* ... */ }); 当然,我可以将这个makeItAwesome添加到模型的静态方法中,但是如果我想让普通的东西可用于其他模型呢。sails.js或waterline本身有内置的方法吗?还是我应该自己做 如果不是的话,保存这些东西的最好方

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

例如,方法
makeItAwesome

Article.makeItAwesome({
    id: 42
}).exec(function(err, awesomeArticle) {
    /* ... */
});
当然,我可以将这个
makeItAwesome
添加到模型的静态方法中,但是如果我想让普通的东西可用于其他模型呢。sails.js或waterline本身有内置的方法吗?还是我应该自己做


如果不是的话,保存这些东西的最好方法是什么?每个模型都需要单独的模块,或者我可以在某个地方扩展每个模型原型一次?

您可以在公共js文件中为每个模型添加所需的方法,并使用lodash以这些默认值扩展您的模型。或者在定义模型时简单地引用导入的操作

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

--或--

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

--或--

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

--或--

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

参考资料

在Waterline0.13(Sails v1.0)中,模型上的实例方法已被删除。