在环回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
,等等。然后把它放在common
或server
下,
我发现在环回中定义函数的最佳方法是使用mixins
。下面是这样做的示例……
你可以通过{mixins:yourmixin.js}
的模型的.json继承这些定义的mixins到你的模型中,很好很容易。
下面是一些示例代码,可以帮助您找到正确的方向。
mynewmodel.js
http://domain/api/mynewmodel/myfunc.jsfunction 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