如何在环回中拥有服务层,就像在其他流行的 mvc 框架中一样



我已经开始在sailsjs中构建一个应用程序,但我决定将其移至环回。从 j2ee/spring mvc 背景来看,我很快就启动并运行了 sailsjs,并在 api/service 中使用了一些业务逻辑。

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

module.exports = {
   testMethod: function(){
      return "Hello joseph"
   },
   testAnotherMethod: function(req,res){
       //lots of other processing etc. Calling other services etc
      res.send("something")
   }
}

创建了服务器/嘘声/路由.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

谁能展示正确的方法?

提前致谢

您需要

require您尝试访问的模块。试试这个:

// 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()调用,变量是未定义的。您可以通过这种方式在应用程序的任何文件中require此服务(只是一个普通的 Node 模块(。

最新更新