원시 KNEX 문을 사용하여 MariaDB에서 데이터 추출
속편 제작자였던 분입니다.
원시 Knex 문을 사용하여 MariaDB에서 데이터를 추출하는 가장 좋은 방법은 무엇입니까?제가 시도한 두 가지 방법은 다음과 같습니다.
MariaDb:
SELECT JSON_OBJECT(
...........
) 'JSON_OBJECT'
결과를 해석하는 jscript:
for ( tmp of result[0] ) { console.log (JSON.parse(tmp.JSON_OBJECT)) ; }
그리고 이 MariaDb:
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
..........
)
) 'JSON_ARRAYAGG'
jscript:
for ( tmp of JSON.parse(result[0][0]['JSON_ARRAYAGG'] )) { console.log(tmp) ; }
이 두 가지 방법 모두 효과가 있지만, 사용하는 것보다 훨씬 더 깨끗한 방법이 있을 수 있습니다.JSON.parse
.
제안?
참고: 저는 확실히 다음을 사용하여 논란이 있다는 것을 이해합니다.raw
저는 이전 응용 프로그램에 있었던 매우 큰 SQL 문을 여러 개 가지고 있으며, 순수한 Knex로 다시 쓰기보다는 (현재로서는) 그대로 사용하고 싶습니다.
편집: knexraw가 반드시 객체를 반환하지는 않기 때문에 "충분히 좋습니다".
노드:
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
..........
)
) 'JSON_ARRAYAGG'
.....................................
const result = await knex.raw( sqlStatement, sqlQuery);
return result[0][0].JSON_ARRAYAGG ;
브라우저:
(async () => { try { let result = await app.service('raw-service').find({query: sqlQuery}) ; newResult = result; } catch (e) { console.log(e); } } )() ;
console.log(JSON.parse(newResult));
하지만 적어도 정말 못생긴 것들은 노드 안에 숨겨져 있습니다.
SQL 데이터베이스는 열 행을 반환하도록 설계되었습니다. 대신 json을 통해 모든 항목을 라우트하는 쿼리는 요청하는 "최상의 방법"이 아닙니다.
첫 번째 시도는 적어도 행을 사용하므로 두 번째 시도보다 좋습니다.
즉, 기존 코드를 다시 쓰는 것이 아니라 Knex와 함께 작동하도록 수정하는 것이라면 최소한의 변경이 필요한 것은 버그를 줄일 수 있으므로 선호해야 합니다.
Knex를 사용하여 MariaDB 데이터베이스에서 데이터를 추출하려면 Knex 쿼리 작성기 개체에서 .select() 메서드를 사용할 수 있습니다.이 방법을 사용하면 .where() 메서드를 사용하여 데이터베이스에서 검색할 열과 조건 또는 필터를 지정할 수 있습니다.
언급URL : https://stackoverflow.com/questions/74996421/extracting-data-from-mariadb-using-a-raw-knex-statement
'programing' 카테고리의 다른 글
MySQL/Connector C 라이브러리를 사용하는 C 애플리케이션은 메모리를 매우 빠르게 소비합니다. (0) | 2023.06.19 |
---|---|
몽구스JS - 최대값을 가진 요소를 찾는 방법은 무엇입니까? (0) | 2023.06.19 |
문자열의 단어 바꾸기 - 루비 (0) | 2023.06.19 |
투영이 db.collection에서 작동하지 않습니다.몽고에서 발견하다 (0) | 2023.06.19 |
IPython 노트북을 명령줄을 통해 파이썬 파일로 변환하려면 어떻게 해야 합니까? (0) | 2023.06.19 |