@opana_001

Как вывести значение из БД через сервер на фронт?

Есть сервер который берет из БД данные(поля) пользователя и отправляет GET запросом, а фронтенд принимает эти данные и показывает пользователю. Сейчас если открыть бота и перейти на сайт (фронтенд) показываются данные только первого кто открыл бота, пример: в БД есть Петя у которого 5 яблок и Саня у которого 10 яблок, Петя и Саня открывают сайт(через бота) Петя видит 5 яблок, а Саня почему то видит тоже 5 яблок. Задача: Хоть 1000 пользователей откроют сайт через бота что бы каждый видел свое значение полученное из сервера(а сервер в свое время из БД).
Backend
const express = require('express')
const TelegramApi = require('node-telegram-bot-api')
const mysql = require('mysql2')
const PORT = process.env.PORT || 3002
const {useState, useEffect} = require('react')
const bodyParser =require('body-parser')
const cors = require('cors')

const app = express()
app.use(bodyParser())
app.listen(PORT, () =>{
    console.log(`Сервер запущен на ${PORT} порту`)
})
const WebApps = "https://backend-drc.ru"
const token = ""
const connection = mysql.createConnection({
  host: "",
  user: "",
  database: "",
  password: ""
})
connection.connect(function(err){
  if(err) {
      return console.error(`Ошибка подключения! Код: `+ err)
  }else{
      console.log(`Покдлючение к БД успешно установлено!`)
  }
})
const bot = new TelegramApi(token, {polling: true})
  bot.on('message', async msg =>{
  const text = msg.text;
  const uggs = msg.chat.username;
  const chatids = msg.chat.id;
  let Users = Boolean
  let UserActive = null
  if(text === '/start'){
    await connection.execute("SELECT * FROM `users` WHERE `users`.`chatids` = "+chatids, (err, results) =>{
      if(err){
        console.log(err)
        return;
      }
      if(results.length <= 0){
        console.log(results)
        Users = false
      }
      else{
        Users = true
        UserActive = results[0].chatids
        console.log(results)
      }
      console.log(UserActive)
    })
    await bot.sendPhoto(chatids, "Logo.png")
    await bot.sendMessage(chatids,"Dragon Village is build",{
      reply_markup: {
        inline_keyboard:[
          [{text:'Go to Dragon village', web_app:{url: WebApps}}]
        ]
      }
    })
  }
app.get('/back', (req, res) => {
      connection.execute("SELECT `Dragons` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
        if (err) {
          console.log(err)
          return;
        }
        res.json({
          dragons: results[0].Dragons
        });
        console.log(results)
      });
    });
    app.get('/back5',(req, res) =>{
      connection.execute("SELECT `DRGcoin` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
          if (err) {
            console.log(err)
            return;
          }
            res.json({
            drg: results[0].DRGcoin
          });
        });
    })
    app.get('/back6',(req, res) =>{
      connection.execute("SELECT `DRCcoin` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
          if (err) {
            console.log(err)
            return;
          }
            res.json({
            drc: results[0].DRCcoin
          })
          //console.log()
        });
    })
    app.post('/chatback', (req, res) => {
    let data = [req.body.Hunters]
    const zapros = "UPDATE `users` SET `Dragons`=? WHERE `users`.`usnames` =?"
    const params = [data, uggs]
    // const fff = itog
    connection.execute(zapros,params,(err, results) =>{
      !err ? res.json(results) : res.json(err)
    })
    console.log(JSON.stringify(data))
    })
      /*const ins = "INSERT INTO `users` (`idteleg`,`chatids`, `usnames`, `Dragons`, `Hunters`, `Defends`, `DRCcoin`, `DRGcoin`) VALUES (NULL,?,?,10,0,0,10,100)"
      const into = [chatids, uggs]
      await connection.execute(ins, into,(err, results) =>{
      })
      console.log('Пользователь создан!')*/
  app.get('/back1',(req, res) =>{
    connection.execute("SELECT `totBank` FROM `stage`",(err, results) => {
        if (err) {
          console.log(err)
          return;
        }
          res.json({
          banks: results[0].totBank
        });
      });
  })
  app.get('/back2',(req, res) =>{
    connection.execute("SELECT `Seasons` FROM `stage`", (err, results) => {
        if (err) {
            console.log(err)
            return;
        }
            res.json({
              seasons: results
      });
   });
  })
  app.get('/back3',(req, res) =>{
    connection.execute("SELECT `toStage` FROM `stage`", (err, results) => {
      if (err) {
          console.log(err)
          return;
        }
          res.json({
          stages: results[0].toStage
      });
    });
  })
  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
        });
      });
  })
  function ValidUser() {
    const sasa = "SELECT * FROM `users` WHERE `users`.`usnames` = ?"
    const ssss = [uggs]
    connection.execute(sasa,ssss, (err, results) =>{
      if(err){
        console.log(err)
        return;
      }
      const param = results[0].chatids
      console.log(results)
      return param
    })
  }
})

app.use(cors())

Пример что принимает и отображает фронт:
import './LogoBar.scss'
import React, {useState, useEffect} from 'react'
export  const LogoBar =()=>{
//----------------------------------   DRG  ------------------------------------
    const [data1, setData1] = useState(null)
    useEffect(() => {
        fetch('back5')
        .then(res => res.json())
        .then(res => setData1(res.drg))
    }, [])
//----------------------------------   DRG  ------------------------------------
    const [data2, setData2] = useState(null)
    useEffect(() => {
        fetch('back6')
        .then(res => res.json())
        .then(res => setData2(res.drc))
    }, [])
//----------------------------------   Показ  ----------------------------------
    return(
        <div className="LogoBar">
            <div className="LogoBar_label"> Online:{</div>
            <div className="MenuButton" onClick={ClickedMenu}></div>
            <div className="MenuLogo"></div>
            <div className="LogoBar_info">
                <div className="LogoBar_balance1"> DRG: {data1}</div>
                <div className="LogoBar_balance2"> DRC: {data2}</div>
            </div>
        </div>
        )
}
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Daemon23RUS
@Daemon23RUS
Словарь: Сегодня учим на букву С
С - Сессия
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы