cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Package @sap/cds for Node.js

ulyssesbonfim
Explorer
0 Likes
8,353

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

View Entire Topic
Former Member
0 Likes

Hi Ulysses,

have you solved the problem? I'm facing the same problem and basically i'm not able to use CDS api following the documenation.

Tks.

Daniele.

ulyssesbonfim
Explorer
0 Likes

Hi Daniele,

No, the problem is still open. The workaround is to use @sap/xsenv and @sap/hdbext to read from DB directly.

I can't find an official tutorial on it, but you can find a sample code from here.

Hope this helps