Node.js 过程参数未传递给SAP CAP应用程序
我有一个正在调用过程的SAP云应用程序。所有没有参数的过程都工作得很好,但我无法让有参数的过程工作。在node.js服务文件中,我将其缩小到以下几行:Node.js 过程参数未传递给SAP CAP应用程序,node.js,sap-cap,Node.js,Sap Cap,我有一个正在调用过程的SAP云应用程序。所有没有参数的过程都工作得很好,但我无法让有参数的过程工作。在node.js服务文件中,我将其缩小到以下几行: const ip = [{"PID": PID}, {"CENTERLAT": CENTERLAT}, {"CENTERLONG": CENTERLONG}, {"PTOL": PTOL}, {"ETOL": ETOL}, {"CURRL
const ip = [{"PID": PID}, {"CENTERLAT": CENTERLAT}, {"CENTERLONG": CENTERLONG}, {"PTOL": PTOL}, {"ETOL": ETOL}, {"CURRLAT": CURRLAT}, {"CURRLONG": CURRLONG}, {"OPEN_CLOSE": OPEN_CLOSE}, {"LDATE": LDATE}, {"LTIME": LTIME}]
const output = await dbConn.callProcedurePromisified(sp, ip)
我得到的错误是:
{ code: -20007,
message: 'Can not bind parameter(0).',
sqlState: 'HY000' }
[2020-08-28T16:30:32.649Z | ERROR | 1987505]: An error occurred during serialization of the entity collection.
[2020-08-28T16:30:32.649Z | ERROR | 1987505]: Error stacktrace: SerializationError: An error occurred during serialization of the entity collection.
当I console.log ip时,我得到:
[ { PID: 'ab9359f1-2b72-4a4b-abf2-0295c7913b51' },
{ CENTERLAT: 32.352521 },
{ CENTERLONG: -117.632423 },
{ PTOL: 3.999999 },
{ ETOL: 5 },
{ CURRLAT: 32.321456 },
{ CURRLONG: -117.090456 },
{ OPEN_CLOSE: 'C' },
{ LDATE: '12122059' },
{ LTIME: '121259' } ]
我的程序定义是:
PROCEDURE "PointPathDistance" (IN PID NVarChar(36),
IN CENTERLAT Double,
IN CENTERLONG Double,
IN PTOL Double
IN ETOL Double,
IN CURRLAT Double,
IN CURRLONG Double,
IN OPEN_CLOSE NVarChar(1),
IN LDATE NVarChar (8),
IN LTIME NVarChar(8),
out result "USERLOCATIONS")
有什么想法吗?
谢谢。我正在做:
const {PID, CENTERLAT, CENTERLONG, PTOL, ETOL, CURRLAT, CURRLONG, OPEN_CLOSE, LDATE, LTIME} = req.data
const ip = [{"PID": PID}, {"CENTERLAT": CENTERLAT}, {"CENTERLONG": CENTERLONG}, {"PTOL": PTOL}, {"ETOL": ETOL}, {"CURRLAT": CURRLAT}, {"CURRLONG": CURRLONG}, {"OPEN_CLOSE": OPEN_CLOSE}, {"LDATE": LDATE}, {"LTIME": LTIME}]
const output = await dbConn.callProcedurePromisified(sp, req.data)
基本上,将req.data解构成一个代码数组,并将其传递到callProcedurePromisified函数中
然后,我想为什么不直接传入req.data呢?具体如下:
const output = await dbConn.callProcedurePromisified(sp, req.data)
它起作用了