如何在MySQL X DevAPI选择查询中以JSON对象的数组而不是数组的数组的形式获取行?

piah890a  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(96)

我在MySQL中使用MySQL X DevAPI作为关系表。

// Working with Relational Tables
var mysqlx = require('@mysql/xdevapi');
var myTable;

// Connect to server using a connection URL
mysqlx
  .getSession({
    user: 'user',
    password: 'password',
    host: 'localhost',
    port: 33060
  })
  .then(function (session) {
    // Accessing an existing table
    myTable = session.getSchema('test').getTable('my_table');

    // Insert SQL Table data
    return myTable
      .insert(['name', 'birthday', 'age'])
      .values(['Laurie', '2000-5-27', 19])
      .execute()
  })
  .then(function () {
    // Find a row in the SQL Table
    let columns = ['name', 'birthday']
    return myTable
        .select(columns)
        .where('name like :name && age < :age)')
        .bind('name', 'L%')
        .bind('age', 30)
        .execute();
  })
  .then(function (myResult) {
    let rows = myResult.fetchAll() // this is array of array
    let columns = ['name', 'birthday']
    rows = rows.map((row) => columns.reduce((a, column, index) => Object.assign(a, { [column]: row[index] }), {}))
    console.log(rows); // this is array of JSON object which is usefull for WEB API reposnse.
  });

字符串
在这段代码中,我必须始终将数组的数组转换为JSON对象的数组

function (myResult) {
    let rows = myResult.fetchAll() // this is array of array
    let columns = ['name', 'birthday']
    rows = rows.map((row) => columns.reduce((a, column, index) => Object.assign(a, { [column]: row[index] }), {}))
    console.log(rows); // this is array of JSON object which is usefull for WEB API reposnse.
  }


X Dev API是一个很好的库,所以有一些很好的方法可以直接获得JSON的结果。
MySQL X DevAPI中获取JSON格式的行有哪些方法?

7vux5j2d

7vux5j2d1#

在表模式下,您需要这样做,或者您可以使用类似JSON_OBJECT()函数的东西,然后将结果数组展平。

let columns = ['name', 'birthday']
let keyValuePairs = columns.map(c => `"${c}", ${c}`)

const res = await table.select(`JSON_OBJECT(${keyValuePairs})`)
  // ...
  .execute()

const rows = res.fetchAll() 

console.log(rows.flat()) // this is now an array of JSON objects

字符串
免责声明:我是MySQL X DevAPI Connector for Node.js的首席开发人员

相关问题