Получение данных из 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(). Надо к tOnline которая получена из БД(90) прибавить значение getValues() и только потом сохранить.
Структура файлов
Ответы (1 шт):
В итоге методом тыка и подбора стратегии выполнения кода получилось! сначало 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(), Можете вывести уже число куда хотите.