programing

원시 KNEX 문을 사용하여 MariaDB에서 데이터 추출

newsource 2023. 6. 19. 21:36

원시 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