Hello folks,
I'm building an app on Cloud Platform (CF) using Node.js/Express. This thing has a /db module containing a entity definition (books-model.cds) and /srv that runs a node.js app on server.js that should read data declared on db module.
According to this documentation the package @sap/cds should help me do exactly that, using the statements below:
cds.importEntities([
{ $entity: "xsds.test.cds::ds_test.e1" },
{ $entity: "xsds.test.cds::ds_test.e2",
$fields: {
a: { $association: "xsds.test.cds::ds_test.e2",
$viaBacklink: "b" }
}
}
], callback);
function callback(error, entities) {
var E1 = entities["xsds.test.cds::ds_test.e1"];
var E2 = entities["xsds.test.cds::ds_test.e2"];
// ...
}
Thing is, @sap/cds module v2.10 doesn't seem to think that it is responsible for doing that. This version only handles the build and deployment of .cds files (to hdbcds et etc).
In a old version of this module, before going to npm repository, it was called "sap-cds" and it did provided this .importEntity method.
Does someone know what would be the equivalent of sap-cds on npm.sap.com, or even if it exists?
So far, I'm able to interact with the database using @sap/xsenv and @sap/hdbext.
import 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\"', function (err, rows) {
res.json({
result: JSON.stringify(rows[0])
})
})
})
(Code is a simplified version of the original)
Although it works, I would like to know if is there a more "high-level" api to interact with the CDS layer.
Thanks
Request clarification before answering.
HI Ulysses,
Don't know if this helps.
I have followed the tutorial https://developers.sap.com/tutorials/cp-apm-nodejs-create-service.html
After exposing and consuming OData from SQLite i have implemented the same scenario in hdb as well.
Everything that I did it was to change the package.json and then to run
cds deploy.
Because I used the SYSTEM user of the tenant, all tables were created under system schema ( please see below ).
I am still investigating/learning node & @sap/cds modules so any piece of advice is very appreciated.
Thank you
package.json
{ "name": "test1-hdb", "description": "Generated by cds init", "repository": "<Add your repository here>", "license": "ISC", "version": "1.0.0", "dependencies": { "@sap/cds": "^3.5.0", "express": "^4.16.4" }, "engines": { "node": ">=8" }, "cds": { "requires": { "db": { "kind": "hana", "model": "srv", "credentials": { "host": "xx.xxx.xxx.xxx", "port": 39041, "user": "SYSTEM", "password": "*****" } } } } }

You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Onu,
I'm not sure on what the question was, but it seems that you're troubled for tables on "SYSTEM" schema.
I think the idea would be to configure hdi-container on your mta.yaml (checkout https://developers.sap.com/tutorials/xsa-hdi-module.html Step 1: Create HDB Module). Once deployed it will generate a specific schema for your app.
Hope this helps.
PS.: Your question albeit interesting is not directly related to the original. I would suggest create a new topic next time, so you gain more visibility and other people with more expertise can also shine some light 😃
Good luck in your journey
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.