在环回中定义自定义函数的最佳方式 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()...
当然,您可以随意命名文件夹:src
、helpers
、support
,随便什么。然后根据需要放在common
或server
下面。
在环回 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 .
如果您有针对特定模型、启动脚本或中间件的自定义函数,那将是一个很好的答案。
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()...
当然,您可以随意命名文件夹:src
、helpers
、support
,随便什么。然后根据需要放在common
或server
下面。