cancel
Showing results for 
Search instead for 
Did you mean: 

How to use parameterized external service programatically in CAP node.js

KM11
Product and Topic Expert
Product and Topic Expert
1,469

Hi Experts

I need to programmatically call an external parameterized service in my cap application.

External service url:

/servicename/ABC(Key=‘123’)/Set


CAP service.cds file:

entity Abc(Key:String(3)) as projection on ext.ABC;


CAP Node.js call: srv.run(SELECT.from(‘Abc(Key:’123’)’)); // tried passing in single quotes and template string both

This created a url like: dest.servicename/?$select=Key


Note: The external service is made out of calc view with parameters


Kindly help. david.kunz2 gregorwolf

Thanks

Kanika

Accepted Solutions (1)

Accepted Solutions (1)

KM11
Product and Topic Expert
Product and Topic Expert

Hi david.kunz2

Thanks for the reply!!
Well, I wrote 'key' hypothetically to avoid using exact names as my service.

Passing with and without quotes around the value also, didnt work.
Finally, I found the cqn way of passing which is finally making the correct URL '/ABC(Key=‘123’)/Set'.

Would be happy to try any other way of achieving the same 🙂

SELECT: { from: { ref: [{ id: "Abc", where: [{ ref: ["key"] }, "=", { val: `${value}` }] }, "Set"] }, columns: [ { ref: ["*"] } ], where: [{ ref: ["fieldname"] }, "=", { val: `${value}` }], } };

SELECT: { 
    from: { ref: [{ id: "Abc", where: [{ ref: ["key"] }, "=", { val: `${value}` }] }, "Set"] }, 
    columns: [ { ref: ["*"] } ], 
    where: [{ ref: ["fieldname"] }, "=", { val: `${value}` }], 
  } 
};

Answers (2)

Answers (2)

sairampadarthi
Explorer
0 Kudos

Hi kanikamalhotra,

Iam also working on same requirement now. can you please share me code snippet once.

Thanks in Advance,

Sairam

david_kunz2
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi kanikamalhotra ,

"Key" is a reserved keyword, so it must be escaped and you don't need quotes around the value.

SELECT.from('Abc(![Key]:123)')

Best regards,
David