在环回api中定义自定义函数的最佳方法



在环回api中定义可用于已定义模型的自定义函数的最佳方法是什么?

例如,一个基本的express应用程序可以在根目录下的helper文件夹中有函数,但不建议在环回中这样做,并且不维护环回方式。

这是很好的文档。

自定义逻辑可以放在

    引导脚本
  • 中间件)
  • 模型:
      远程方法
    • 远程钩子
    • 操作钩子

应用程序解耦逻辑可以很好地放在辅助文件夹,根级别的单独文件夹中,等等。这样模块化你的程序并没有错,实际上这是一件好事。

正如其他人所提到的,环回文档这样回答您的问题:

  • 为模型添加逻辑——添加远程方法、远程钩子和操作钩子。
  • 定义启动脚本-编写脚本(在/server/boot目录中),当应用程序启动时运行。
  • 定义中间件——向应用程序中添加自定义中间件。

如果您有针对特定模型、引导脚本或中间件的自定义函数,那么这是一个很好的答案。正如Dharmendra Yadav所说,混合可以是另一种选择:

你可以使用mixins对模型执行不同的通用操作,比如使用操作钩子观察变化和添加模型属性。

但是那些根本不属于这些类别的代码呢?

我没有很多web框架的经验,但我用过的一个框架是Grails,它非常固执己见,几乎给你一个地方放任何东西。如果你的代码不适合这些类别,他们也会给你一个地方:

  • src/main/groovy -支持源码

所以当我在环回遇到同样的问题时,我只是在server下创建了一个src目录,这就是我把一些似乎不适合其他任何地方的助手类。我把它们包括在需要的地方:

const HelperClass = require('../src/HelperClass');
HelperClass.helperFunction()...

当然你可以给文件夹起任何你喜欢的名字:src, helpers, support,等等。然后把它放在commonserver下,

我发现在环回中定义函数的最佳方法是使用mixins。下面是这样做的示例……

https://loopback.io/doc/en/lb3/Defining-mixins.html

你可以通过{mixins:yourmixin.js}的模型的.json继承这些定义的mixins到你的模型中,很好很容易。

下面是一些示例代码,可以帮助您找到正确的方向。

mynewmodel.js

http://domain/api/mynewmodel/myfunc.js

function myfunc(data, callback) {
    // ** Put your code here **
    console.log('myfunc');
}
function remoteMethod(model) {
    model.remoteMethod(
        'myfunc',
        {
            http: { verb: 'post' },
            accepts: { arg: 'data', type: 'data' },
            returns: [
                { arg: 'returndata', type: 'data' }
            ]
        }
    )
}

通常你的js文件放在common/models

最新更新