Получение данных из JSON объекта

Задача взять из столбца tOnline передать фронтенду значение столбца т.е 90.

Бд

Бэкенд:

const express = require('express')
const TelegramApi = require('node-telegram-bot-api')
const mysql = require('mysql2')
const PORT = process.env.PORT || 3002
const app = express()
const connection = mysql.createConnection({
  host: "31.31.198.112",
  user: "u2642045_jahon",
  database: "u2642045_dragonapp",
  password: "joha_003"
})
app.get('/back4',(req, res) =>{
    connection.execute("SELECT `tOnline` FROM `stage`", (err, results) => {
        if (err) {
          console.log(err)
          return;
        }
          res.json({
          online: results[0].tOnline
        });
      });
})
app.post('/chatback', (req, res) => {
  let data = [req.body.Hunters]
  connection.query("UPDATE `stage` SET `tOnline`= ? WHERE 1",data,(err, results,) =>{
    !err ? res.json(results) : res.json(err)
  })
  console.log(JSON.stringify(data))
});

Что выводит Вывод Фронтенд component LogoBar:

import './LogoBar.scss'
import React, {useState, useEffect} from 'react'
import axios from 'axios';
export  const LogoBar =()=>{
//---------------------------------- Online -------------------------------
    const [data, setData] = useState(null)
    useEffect(() => {
        fetch('back4')
        .then(res => res.json())
        .then(res => setData(res.online))
    }, [])
    console.log(data)
    return(
        <div className="LogoBar">
            <div className="LogoBar_label"> Online:{data}</div>
        </div>
        )
}

Выводит: Вывод

Пытаюсь в компоненте InfoBarShop вызвать LogoBar.data и сохранить в БД :

import './InfoBarShop.scss'
import React from 'react'
import axios from 'axios'
import { LogoBar } from '../../LogoBar1/LogoBar';
return(
        <div className="InfoBarShop">
            <div className="InfoBarShop1">
                <input className="InputMorphis" type='text' id='Morphis' name='Morp' min="0" max="500" placeholder='ammount'/>
            </div>
            <div className="InfoBarShop2">
                <div className="InfoBarShop22">DRC:21</div>
                <input className="InputAlphus" id="Alphus" type='text' name='Al' min="0" max="500" placeholder='ammount'/>
                <button className='buttons' onClick={postData}>Total</button>
            </div>
        </div>
        )
}
function getValues(){
    var inputMorphis = document.getElementById("Morphis").value
    inputMorphis = parseInt(inputMorphis)
//--------------------------- Alphus ---------------------------
    var inputAlpus = document.getElementById("Alphus").value
    var Alphus = parseInt(inputAlpus)
//--------------------------- Total ----------------------------
    let ggs = inputMorphis+Alphus
    return JSON.stringify(ggs);
}
let postData = () =>{
    const varss = LogoBar.data
    let fsfs = getValues() + varss
    let post = axios.post('http://localhost:3002/chatback',{
        Hunters: fsfs
    })
    console.log(fsfs)
}

В БД сохраняется только значение из getValues(). GGG Надо к tOnline которая получена из БД(90) прибавить значение getValues() и только потом сохранить.

Структура файлов

Text


Ответы (1 шт):

Автор решения: Shumaxer

В итоге методом тыка и подбора стратегии выполнения кода получилось! сначало data преобразовал как JSON.stringify(data) а дальше это значение провел через parseInt() оба значения и вуаля!

let postData = () =>{
    let fsfs = parseInt(getValues()) + parseInt(JSON.stringify(data))
    let post = axios.post('http://localhost:3002/chatback',{
        Hunters: fsfs
    })
    console.log(fsfs)
    console.log(data)
}

Тем у кого если будет такая же проблема: данные из сервера переведите в JSON.stringify() а дальше этот стрингфай пропустите через parseInt(), Можете вывести уже число куда хотите.

→ Ссылка