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

时间:2015-01-25 14:34:03

标签: javascript node.js orm sails.js waterline

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

例如方法makeItAwesome

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

- 或 -

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

- 或 -

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

- 或 -

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

<强>参考