Node.js mysql xdevapi пустой массив

153
30 мая 2019, 10:30

io.on('connection', (socket) => { 
    socket.on('login', async ({ user, password }) => { 
        dbconfig.user = user; 
        dbconfig.password = password; 
        try { 
            dbconnect = await mysqlx.getSession(dbconfig); 
            let databases = await dbconnect.getSchemas(); 
 
            console.log(`Databases`, databases); 
            console.log(`Index 0`, databases[0].name); 
            console.log(`Stringify Data`, JSON.stringify(databases)); 
 
 
            socket.emit("DATABASES", JSON.stringify(databases)); 
        } catch (err) { 
            console.log('err', err); 
            socket.emit("ERROR", err); 
        } 
    }); 
});

Вроде нормально возвращает базы данных, но при попытки сделать стингифай, почему то вот такое результат.
Так же я не могу обратиться к какому то элементу допустим к 0 и взять у его свойство name.
Использую mysql/xdevapi'

Answer 1

Согласно официальной документации, чтобы получить имена баз данных:

// Connecting to MySQL and working with a Session
var mysqlx = require('@mysql/xdevapi');
// Connect to a dedicated MySQL server using a connection URI
mysqlx
   .getSession('user:password@localhost')
   .then(function (mySession) {
   // Get a list of all available schemas
       return mySession.getSchemas();
   })
   .then(function (schemaList) {
      console.log('Available schemas in this session:\n');
      // Loop over all available schemas and print their name
      schemaList.forEach(function (schema) {
        console.log(schema.getName() + '\n');
      });
    });

В вашем случае:

// Loop over all available schemas and print their name
   databases.forEach(function (schema) {
      console.log(schema.getName() + '\n');
   });

Похоже, что с полученными вами Schema Objects нельзя работать как с javascript объектом, поэтому JSON.stringify здесь не уместно.

Здесь описано, как работать с такими объектами и какие функции доступны: https://dev.mysql.com/doc/x-devapi-userguide/en/crud-ebnf-schema-objects-and-functions.html

READ ALSO
MySql индексация datetime

MySql индексация datetime

WHERE `date_time` BETWEEN '2018-01-01' and '2018-01-02' - Подхватывает индекс

213
MySQL иерархическая модель

MySQL иерархическая модель

Как можно реализовывать структуру и запрос по иерархической модели ?!

172
Отступы между колонками в flex grid foundation

Отступы между колонками в flex grid foundation

Как в foundation поставить отступы между колонками используя flex grid?

141
Адаптация под мобильное устройство, Google не видит что он адаптивен при проверке

Адаптация под мобильное устройство, Google не видит что он адаптивен при проверке

Есть сайт, https://elenanoviascom/en/ я адаптировал его под моб

140