【问题标题】:How to extend waterline with custom query methods?如何使用自定义查询方法扩展水线?
【发布时间】:2015-03-24 02:57:52
【问题描述】:

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

例如方法makeItAwesome:

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

当然,我可以将 makeItAwesome 添加到模型的静态方法中,但如果我想要可重用于其他模型的通用内容怎么办。 Sails.js 或 waterline 本身有内置的方法还是我应该自己做?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    -- 或者--

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

    -- 或者--

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

    -- 或者--

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

    参考文献

    【讨论】:

    • 在 Waterline 0.13 (Sails v1.0) 中模型上的实例方法已被删除。
    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多