软件包@ sap/cds for Node.js

2020-08-17 13:30发布

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

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


您好,

我正在使用Node.js/Express在Cloud Platform(CF)上构建应用程序。 这个东西有一个/db模块,其中包含一个实体定义(books-model.cds)和/srv,它在server.js上运行一个node.js应用,该应用应该读取在db模块上声明的数据。

根据此文档软件包@ sap/cds应该可以使用以下语句帮助我做到这一点:

 cds.importEntities([
     {$ entity:" xsds.test.cds :: ds_test.e1"},
     {$ entity:" xsds.test.cds :: ds_test.e2",
       $ fields:{
           一个:{$ association:" xsds.test.cds :: ds_test.e2",
                $ viaBacklink:" b"}
       }
     }
 ], 打回来);
 函数回调(错误,实体){
     var E1 =实体[" xsds.test.cds :: ds_test.e1"];
     var E2 =实体[" xsds.test.cds :: ds_test.e2"];
    //...
 }
 

事实是,@ sap/cds模块v2.10似乎不认为它对此负责。 此版本仅处理.cds文件的构建和部署(到hdbcds等)。

在该模块的旧版本中,在进入npm存储库之前,它被称为" sap-cds",并且确实提供了此.importEntity方法。

有人知道 npm.sap.com ,甚至存在吗?

到目前为止,我已经可以使用@ sap/xsenv和@ sap/hdbext与数据库进行交互。

导入xsenv = require('@ sap/xsenv')import hdbext = require('@ sap/hdbext')
 const services = xsenv.getServices({hana:'plcockpit-hdi'})

 express.use('/',hdbext.middleware(services.hana))
 express.get('/',(req,res)=> {
         req.db.exec('SELECT * FROM \" com.acme :: MyLibrary.Books \"',函数(错误,行){
             res.json({
                 结果:JSON.stringify(rows [0])
             })
         })
     })
 

(代码是原始代码的简化版本)

尽管它可以工作,但我想知道是否还有更多的"高级" api与CDS层进行交互。

谢谢

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

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


您好,

我正在使用Node.js/Express在Cloud Platform(CF)上构建应用程序。 这个东西有一个/db模块,其中包含一个实体定义(books-model.cds)和/srv,它在server.js上运行一个node.js应用,该应用应该读取在db模块上声明的数据。

根据此文档软件包@ sap/cds应该可以使用以下语句帮助我做到这一点:

 cds.importEntities([
     {$ entity:" xsds.test.cds :: ds_test.e1"},
     {$ entity:" xsds.test.cds :: ds_test.e2",
       $ fields:{
           一个:{$ association:" xsds.test.cds :: ds_test.e2",
                $ viaBacklink:" b"}
       }
     }
 ], 打回来);
 函数回调(错误,实体){
     var E1 =实体[" xsds.test.cds :: ds_test.e1"];
     var E2 =实体[" xsds.test.cds :: ds_test.e2"];
    //...
 }
 

事实是,@ sap/cds模块v2.10似乎不认为它对此负责。 此版本仅处理.cds文件的构建和部署(到hdbcds等)。

在该模块的旧版本中,在进入npm存储库之前,它被称为" sap-cds",并且确实提供了此.importEntity方法。

有人知道 npm.sap.com ,甚至存在吗?

到目前为止,我已经可以使用@ sap/xsenv和@ sap/hdbext与数据库进行交互。

导入xsenv = require('@ sap/xsenv')import hdbext = require('@ sap/hdbext')
 const services = xsenv.getServices({hana:'plcockpit-hdi'})

 express.use('/',hdbext.middleware(services.hana))
 express.get('/',(req,res)=> {
         req.db.exec('SELECT * FROM \" com.acme :: MyLibrary.Books \"',函数(错误,行){
             res.json({
                 结果:JSON.stringify(rows [0])
             })
         })
     })
 

(代码是原始代码的简化版本)

尽管它可以工作,但我想知道是否还有更多的"高级" api与CDS层进行交互。

谢谢

10条回答
葫芦娃快救爷爷
1楼-- · 2020-08-17 14:04

HI尤利西斯,

不知道这是否有帮助。

我已按照教程 https://developers.sap .com/tutorials/cp-apm-nodejs-create-service.html

从SQLite公开并使用OData之后,我也在hdb中实现了相同的场景。

我所做的一切都是更改package.json然后运行

cds部署。

因为我使用了租户的SYSTEM用户,所以所有表都是在系统架构下创建的(请参见下文)。

我仍在研究/学习节点和@ sap/cds模块,因此非常感谢任何建议。

谢谢

package.json

{"名称":" test1-hdb","描述":"由cds init生成","存储库":" <在此处添加存储库","许可证":" ISC","版本": " 1.0.0","依赖关系":{" @ sap/cds":" ^ 3.5.0","表达":" ^ 4.16.4"},"引擎":{"节点":"> = 8 "}," cds":{" requires":{" db":{" kind":" hana"," model":" srv"," credentials":{" host":" xx.xxx.xxx。 xxx","端口":39041,"用户":"系统","密码":" *****"}}}}}

callcenter油条
2楼-- · 2020-08-17 14:02

Hello Tobias,


| 我们如何告诉CD使用连接的环境变量而不是package.json中的固定值?

对HDI容器的访问将通过xsenv完成,如下所示(请参阅我的原始帖子)

 const xsenv = require(" @ sap/xsenv")

//读取容器参考
 const services = xsenv.getServices({hana:'mycontainer-hdi'})

//使用hana服务中间件
 express.use('/',hdbext.middleware(services.hana))

这应该为您的应用程序提供对正确的HDI容器的访问权限。

希望这对您有帮助

hongfeng1314
3楼-- · 2020-08-17 13:54

Hi Onu,

我正在和你做同样的事情。 在使用HANA时,您可能希望将XSA与HDI概念结合使用。 这意味着当您部署数据库部件时,将创建一个HDI容器。 然后,您必须确保您的node.js模块需要数据库容器。 然后,Cloud Foundry环境将把hdi容器的连接设置注入到node.js模块环境变量中。 这是使用XSA进行的标准Cloud Foundry开发。 然后,您可以获得容器的生成的技术用户和密码,并在上面的示例中使用它们。 但是...在将应用程序部署到云平台时,这不能解决问题。

我们如何告诉CD使用连接的环境变量而不是package.json中的固定值? 我只是想弄清楚如何填充cds.connect函数的options参数。 如果未提供参数,似乎它将从package.json中获取它们。

希望您可以关注。

干杯

Tobi

xfwsx85
4楼-- · 2020-08-17 14:05

嗨,大家好, Stefan Voicila

我也遇到了和Stefan一样的错误。

任何人都可以帮助我解决问题。

此致

一周热门 更多>