sap - xsjs $.hdb.getConnection 未定义
问题描述
我正在尝试做一些练习,比如这个:https ://blogs.sap.com/2016/03/28/developing-with-xs-advanced-add-business-logic-with-nodejs/
我面临这个问题,我到处张贴(真的)寻求帮助,我没有收到任何关于它的指导,希望有人帮助。
在那个练习中,有这个代码片段:
function saveCountry(country){
var conn = $.hdb.getConnetion();
var output = ...
}
无论如何,我得到了这个错误:500 Cannot read property 'getConnection' of undefined
此外,我尝试使用 vim、node 和 xs 从终端制作 nodejs,如本文档所示:https ://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.02/en-US/32392948cb1844b2a6ed22ad641d4461.html
在该文档的第 3 项中,有以下代码片段:
var express = require('express');
var app = express();
var xsenv = require('@sap/xsenv');
var services = xsenv.getServices({ hana:'myhana' });
// also tried this ways:
// xsenv.getServices({hana: {tag:'myhana'}});
// xsenv.getServices({hana: {tag:'hana'}});
app.get('/', function (req, res) {
res.send('Using HANA ' + services.hana.host + ':' + services.hana.port);
});
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('myapp listening on port ' + port);
});
现在,创建一个服务:
xs create-service hana hdi-shared myhana
此外,验证服务是否存在:
xs s
然后,使用以下命令运行 nodejs-app:
xs push
结果:
**Error No service matches hana**
所以,在简历中,我缺少什么才能使用 $.hdb.getConnetion(); ? 当我从 webIDE 创建项目时,我单击了启用 xsjs 选项,就是这样,我有这个 var xsjs = require('@sap/xsjs'); 而且,在另一个练习中,“没有服务匹配”是怎么回事,我清楚地看到了!
这是安装的版本和盒子规格:
HDB version info:
version: 2.00.030.00.1522210459
branch: hanaws
machine config: linuxx86_64
git hash: bb2ff6b25b8eab5ab382c170a43dc95ae6ce298f
git merge time: 2018-03-28 06:14:19
weekstone: 2018.13.0
cloud edition: 0000.00.00
compile date: 2018-03-28 06:19:13
compile host: ld2221
compile type: rel
红帽 7.5
非常感谢所有的帮助。
xOCh
解决方案
对于第一个片段,我必须警告您使用的 HANA Express 版本不再支持使用 express 的 XSJS。
但是,在第一个和第二个错误中,您似乎缺少节点模块和数据库模块之间的依赖关系,或者以某种方式 HDI 容器未绑定到您的 js 应用程序。
例如,如果您使用 HANA 的 Web IDE,则可以在 mta.yaml 文件中设置依赖项:
modules:
- name: db
type: hdb
path: db
requires:
- name: hdi_db
- name: js
type: nodejs
path: js
provides:
- name: js_api
properties:
url: '${default-url}'
requires:
- name: hdi_db
- name: db
resources:
- name: hdi_db
properties:
hdi-container-name: '${service-name}'
type: com.sap.xs.hdi-container
这里有一个例子:https ://www.sap.com/developer/tutorials/xsa-xsjs-xsodata.html
如果这已经到位,您可以在 CLI 中使用命令xs s检查绑定(切换到与xs target一起使用的空间,例如:xs target -s development)
如果您只在数据库服务的绑定应用程序下看到 di-builder 而没有看到 js 模块,则它们未绑定。您可以使用命令 xs bind-service 将 js 应用绑定到 db 服务,例如:
xs bs XSA_DEV-3blurblurb-test-js XSA_DEV-3bkurblurb-test-hdi_db
推荐阅读
- postgresql - 在 Postgresql 中按日、分和秒提取时间戳差异
- python-3.x - 如何导入图像并使用 Pygame 中定义的函数为它们分配不同的名称
- sql - 如何根据列值递增地返回行数
- laravel - Laravel - 时区 - 配置为空
- c++ - C++ std::enable_if 回退?
- scala - Scala:如何对调用该方法的实例类型进行模式匹配?
- javascript - React 的函数式 setState 如何确定哪些字段已更新?
- python - Hyperledger Sawtooth + Docker
- swift - 在表格视图中我想添加一些图像,但是当我运行它时它没有显示并且我已经在 assets.xcassets 中导入了图像
- interface - Webassembly (WASI) 运行时能够自行呈现(或执行)什么?