Как получить данные из базы данных в формате массива, используя узлы js и MySql - PullRequest
0 голосов
/ 04 ноября 2019

Я использую node.js в качестве языка сервера и Mysql в качестве базы данных, поэтому я выполняю запрос и получаю данные из базы данных, но отображается в формате, подобном следующему

  [ BinaryRow { name: 'Dheeraj', amount: '77.0000' },
    BinaryRow { name: 'Raju', amount: '255.0000' } ]

Что я хочу, это

    ['Dheeraj', 77.0000],
    ['Raju', 66255.000030],

Это то, что я делаю в своем бэкэнде (node.js):

Моя модель:

static getChartData(phoneNo, userType) {

        let sql = 'select businessname as name,sum(billamt) amount from cashbackdispdets where consphoneno =' + phoneNo + ' group by  businessid order by tstime desc limit 10'
        return db.execute(sql, [phoneNo]);

Мой контроллер:

exports.getColumnChart = function(req, res) {
    const phoneNo = req.body.userId
    const userType = req.body.userType
    console.log(phoneNo)
    dashboardModule.getChartData(phoneNo, userType)
        .then(([rows]) => {
            if (rows.length > 0) {
                console.log(rows)
                return res.json(rows)
            } else {
                console.log("error")
                return res.status(404).json({ error: 'Phone No. already taken' })
            }
        })
    .catch((error) => {
        console.log(error)
        return res.status(404).json({ error: 'Something went wrong !!' })
    })
}

Я отправляю эти данные на Ui, и когда я получаю их на UI, они имеют вид объекта внутри массива, который не является требуемым типом данных, который я хочу

axios().post('/api/v1/Dashboard/DashboardColumnChart',this.form)
  .then(res=>{
    console.log(res.data)
    debugger
  this.chartData= res.data
       })

Приведенный выше код консолив браузере, как this

Я не понимаю, как это сделать, если я должен сделать это с бэкэндом или с интерфейсом и как

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вы можете отформатировать его, используя array.map и Object.values. map function зацикливается на каждом элементе и возвращает измененный элемент в соответствии с предоставленным обратным вызовом. Object.values просто возвращает все значения объекта в массиве.

const data = [ { "name": "Dheeraj", "amount": "77.0000" }, { "name": "Raju", "amount": "255.0000" } ];

const formattedData = data.map(obj => Object.values(obj));

console.log("Initial Data: ", data);
console.log("Formatted Data: ", formattedData);


// Map function example
const a = [1,2,3]
const mappedA = a.map(e => e * 2)
console.log(a, " mapped to: ", mappedA);

// Object.values example
const b = { firstName: 'John', lastName: 'Doe', number: '120120' }
console.log(Object.values(b));
1 голос
/ 04 ноября 2019

Nodejs отправит вам ответ JSON, если вы хотите изменить его. Лучше изменить или манипулировать им в рамках Front end. Но если вы хотите изменить его в бэкенде, как вы и просили, убедитесь, что строки имеют формат, который вы хотите получить.

 let data = [ 
        { "name": "Dheeraj", "amount": "77.0000" }, 
        { "name": "Raju", "amount": "255.0000" } 
    ]
    // empty array to store the data
    let testData = [];
    data.forEach(element => {
          testData.push(element.name)
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...