Mam tablicę użytkowników jak poniżej

let usersarr = ["'SAC_XSA_HDB_USER_ABC','SAC_XSA_HDB_USER_DEF'"]

Chcę pobrać dane o powyższych użytkownikach (jeśli istnieje) z bazy danych HANA. Używam biblioteki SAP-HDBext-Promisfied w Node.js.

Moje połączenie bazy danych działa dobrze. Próbuję więc wykonać zapytanie wybrane jak poniżej

async function readUsers(xsaDbConn){
try{
       let usersarr = ["'SAC_XSA_HDB_USER_ABC','SAC_XSA_HDB_USER_DEF'"]          

       const checkuserexiststatement = await xsaDbConn.preparePromisified("SELECT USER_NAME FROM USERS WHERE USER_NAME IN (?)")

       let checkuserexistresult = await xsaDbConn.statementExecPromisified(checkuserexiststatement, [usersarr])

       console.log(checkuserexistresult)

       return checkuserexistresult
}catch(err){
    console.log(err)
    return;
}

}

Poniżej znajduje się wyjście

PS C:\Users\Documents\XSA\SAC_POC\cap_njs> npm start

> cap_njs@1.0.0 start C:\Users\Documents\XSA\SAC_POC\cap_njs
> node server.js

myapp is using Node.js version: v12.18.3
myapp listening on port 3000
[]

Dostaję pustą tablicę jako wyjście. Nie jest to oczekiwane wyjście, zamiast tego powinno podać szczegóły dotyczące użytkowników, ponieważ istnieją w bazie danych.

Powyższy kod działa, gdy zapewniam pojedynczą wartość użytkownika zamiast wielu użytkowników w tablicy, jak pokazano poniżej

async function readUsers(xsaDbConn, tempxsahdbusers){
try{
     let usersarr = 'SAC_XSA_HDB_USER_ABC'

     const checkuserexiststatement = await xsaDbConn.preparePromisified("SELECT USER_NAME FROM USERS WHERE USER_NAME IN (?)")
     let checkuserexistresult = await xsaDbConn.statementExecPromisified(checkuserexiststatement, [usersarr])

     console.log(checkuserexistresult)

     return checkuserexistresult
}catch(err){
    console.log(err)
    return;
}

}

Wyjście powyżej kodu -

PS C:\Users\Documents\XSA\SAC_POC\cap_njs> npm start

> cap_njs@1.0.0 start C:\Users\Documents\XSA\SAC_POC\cap_njs
> node server.js

myapp is using Node.js version: v12.18.3
myapp listening on port 3000
[ 'SAC_XSA_HDB_USER_ABC' ]

Dlaczego więc daje pusty obiekt tablicy, gdy zapewniam tablicę jako parametr zamiast zmiennej? Czy możliwe jest dostarczenie tablicy jako parametru z funkcją kredurekKompromisyfikowany (oświadczenie []) biblioteki SAP-HDBEXT-PROMISFED w NODE.JS?

0
Shreyasi Chakraborty 19 październik 2020, 17:56

1 odpowiedź

Najlepsza odpowiedź

Twój

Niech Użytkownicyr = ["'' sac_xsa_hdb_user_abc '," sac_xsa_hdb_user_def "]

Ma dokładnie jedną wartość, ciąg:

"'Sac_xsa_hdb_user_abc', 'sac_xsa_hdb_user_def'

Podczas przekazywania Userarr w funkcji kredurekPromisited jako parametru rzeczywiście przechodzisz zagnieżdżoną tablicę w tablicy. Możesz albo spróbować

xsaDbConn.statementExecPromisified(checkuserexiststatement, [usersarr[0]])

Lub oddziel wartości w userarr i dodaj wiele? W przygotowanym oświadczeniu i odniesienie każdej pojedynczej wartości za pomocą UserARr [x].

0
fidsusj 26 październik 2020, 15:04