CAP -OData V2适配器

2020-08-25 22:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 对于我们开发的应用程序,...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

对于我们开发的应用程序,我需要在V2中公开OData,我发现我们可以使用v2适配器。

我使用了" @ sap/cds-odata-v2-adapter-proxy",但是它给出了内部服务器错误,并且没有相关的应用程序日志

>

我不确定服务器中是否缺少某些内容。 js。 您能帮忙吗?

server.js

"使用严格";
  const https = require(" https");
  const port = process.env.PORT ||  3000;
  const server = require(" http")。createServer();
  const cds = require(" @ sap/cds");
 //为XSA UAA和HDBEXT中间件初始化Express App
  const xsenv = require(" @ sap/xsenv");
  const xssec = require(" @ sap/xssec");
  const xsHDBConn = require(" @ sap/hdbext");
  const express = require(" express");
  const odatav2proxy = require(" @ sap/cds-odata-v2-adapter-proxy")
  https.globalAgent.options.ca = xsenv.loadCertificates();
  global .__ base = __dirname +"/";
  global .__ uaa = process.env.UAA_SERVICE_NAME;
 
  var app = express();
  
  var hanaOptions = xsenv.getServices({
  哈娜:{
  计划:" hdi共享"
  }
  });

//CDS OData V4处理程序
  var options = {
  种类:" hana",
  logLevel:"信息"
  };
  cds.connect(选项);
  var odataURL ="/img/catalog";
 //主应用
  cds.serve(" gen/csn.json",{
  crashOnError:错误
  })
  .at(odataURL)
  .with(require(" ./lib/handlers"))
  .in(app)
  .catch((err)=> {
  console.log(err);
  process.exit(1);
  });

 //将任何重定向到服务根
  app.get("/",(req,res)=> {
  res.redirect(odataURL);
  });
  app.use(odatav2proxy({port}));
   
  require(" ./router")(应用程序,服务器);

 //启动服务器
  server.on(" request",app);
  server.listen(port,function(){
  console.info(`HTTP Server:$ {server.address()。port}`);
  });
 

谢谢

4条回答
派大星 ヾ
2020-08-25 23:40

我为您提供了不同的型号 :

-您具有用于OData v4的cds.serve(" gen/csn.json")

-您有odatav2proxy({port}),它隐式使用模型" all"。 模型"全部"触发db和srv文件夹中所有CDS实体的编译...

因此,您似乎设法以某种方式设法获得了有效的gen/csn.json,但是CDS实体的编译失败。 (请参阅您的屏幕截图)。 看起来"正在使用"语句是错误的,因为它试图查找模块" ..db/data-model'\ ncat-service.cds ...

能否请您致电cds build/compile检查所有CDS文件的有效性,并修复CDS错误?

为了对齐OData服务v2和v4,还应该对代理使用" gen/csn.json",如下所示:

 app.use(odatav2proxy({port,model:" gen/csn.json"})); 

你能检查一下吗? 谢谢。

一周热门 更多>