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

Best way to define custom functions in loopback api

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

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

非常感谢任何帮助。

这个很好documented.

自定义逻辑可以放在

  • 引导脚本
  • 中间件
  • 型号:
    • 远程方法
    • 远程挂钩
    • 操作挂钩

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

这里有一些示例代码可以帮助您朝着正确的方向前进。

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

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

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

您可以通过使用 {mixins:yourmixin.js} 的模型的 .json 将这些定义的混入继承到您的模型中,非常简单。

正如其他人所提到的,Loopback documentation 是这样回答你的问题的:

  • Adding logic to models - adding remote methods, remote hooks and operation hooks.
  • Defining boot scripts - writing scripts (in the /server/boot directory) that run when the application starts.
  • Defining middleware - adding custom middleware to the application .

如果您有针对特定模型、启动脚本或中间件的自定义函数,那将是一个很好的答案。 , mixins 可以是另一种选择:

You can use mixins to perform different common actions on models such as observing changes using operation hooks and adding model attributes.

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

我没有使用过很多 Web 框架的经验,但我使用过的一个框架是 Grails,它非常自以为是 gives you a place for just about everything。如果您的代码不属于这些类别中的任何一个,他们也会为您提供一个位置:

  • src/main/groovy - Supporting sources

因此,当我 运行 在 Loopback 中遇到同样的问题时,我只是在 server 下创建了一个 src 目录,这就是我放置一些助手 类 的地方似乎适合其他任何地方。我会根据需要包括它们:

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

当然,您可以随意命名文件夹:srchelperssupport,随便什么。然后根据需要放在commonserver下面。