Node.js 如何像在其他流行的mvc框架中一样在环回中使用服务层?

Node.js 如何像在其他流行的mvc框架中一样在环回中使用服务层?,node.js,express,loopbackjs,Node.js,Express,Loopbackjs,我已经开始在sailsjs中构建应用程序,但我决定将其移动到环回。在j2ee/SpringMVC的背景下,我很快就启动并运行了sailsjs,并在api/服务中使用了一些业务逻辑 不幸的是,我还没有找到在环回上创建这些服务的方法。我不是说远程方法。这些服务实际上并不与任何模型绑定,它们位于模型之上的一层。我尝试在server/service/DataModelService.js上创建以下内容 module.exports = { testMethod: function(){

我已经开始在sailsjs中构建应用程序,但我决定将其移动到环回。在j2ee/SpringMVC的背景下,我很快就启动并运行了sailsjs,并在api/服务中使用了一些业务逻辑

不幸的是,我还没有找到在环回上创建这些服务的方法。我不是说远程方法。这些服务实际上并不与任何模型绑定,它们位于模型之上的一层。我尝试在server/service/DataModelService.js上创建以下内容

module.exports = {
   testMethod: function(){
      return "Hello joseph"
   },
   testAnotherMethod: function(req,res){
       //lots of other processing etc. Calling other services etc
      res.send("something")
   }
}
使用以下内容创建了server/boo/routes.js

module.exports = function(app){
app.get('/test', function(req, res){
    res.send(DataModelService.testMethod());
});

}
但很快就出现了这个参考错误:

DataModelService is not defined
at /media/joseph/Data/Personal/tutorials/testingloopback/server /boot/routes.js:3:18
at Layer.handle [as handle_request] (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)
at next (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)
at /media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)
at next (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/loopback/node_modules/express/lib/router/index.js:271:10)
at cors (/media/joseph/Data/Personal/tutorials/testingloopback/node_modules/cors/lib/index.js:178:7)
at /media/joseph/Data/Personal/tutorials/testingloopback/node_modules /cors/lib/index.js:228:17
有人能告诉我正确的方法吗


提前感谢

您需要要求您尝试访问的模块。试试这个:

// server/boot/routes.js
var DataModelService = require('../service/DataModelService.js');

module.exports = function(app){
  app.get('/test', function(req, res){
    res.send(DataModelService.testMethod());
  });
};

如果没有
require()
调用,则变量未定义。您可以通过这种方式在应用程序中的任何文件中
要求
此服务(它只是一个普通节点模块)。

您尝试过操作挂钩吗?你好@ViniciusZaramella谢谢你的建议。在我看来,一切都与环回中的模型相关联。难道没有一个独立于模型执行某种操作、功能或业务逻辑的地方吗?这取决于你想做什么。您也可以在中间件中使用一些逻辑。在使用环回时,您应该能够对node/express执行所有操作。但是在框架内,几乎所有的东西都与模型相关。您好,谢谢您提供的信息。看起来像是快车。难道没有办法加载整个文件夹吗?LoopBack基于Express,它在封面下使用它。但是
require()
方法不是Express,也就是说。使用
require
一次不能加载多个文件,但是,可以指定一个包含
package.json
文件的目录,节点将在该json文件中查找
main
条目并加载该文件。然后,该文件可以
require()
许多其他文件。