数据库中的连接:ReactJS与数据库的连接

我想从前端反应 js 表单获取数据,并使用后端快递插入到 mysql 数据库。你能告诉我从前端到后端的流程简单的一个字段形式使用反应 js,然后插入数据库。

14

让我们举一个简单的库应用程序的例子,它的表(books)带有字段book_nameautr

让我们先看看后端代码(在节点 Js 中)

const express = require('express');
const bodyPr = require('body-pr');
var connection  = require('express-myconnection'); 
var mysql = require('mysql');
const app = express(); 
app.use(bodyPr.json());
app.use(
        connection(mysql,{
            st: 'localst', //'localst',
            user: 'userEHX',
            pword : 'hMmx56FN4GHpMXOl',
            port : 3306, //port mysql
            database:'sampledb'
        },'l')); //or single
       app.post('/add_book',(req,res)=>{
        let {book_name,autr,} = req.body;
        if(!book_name) return res.status(400).json('Book Name cant be blank');
        if(!autr) return res.status(400).json('Autr cant be blank');
        var data={book_name:book_name,
                  autr:autr};
         var query = connection.query("INSERT INTO books set ? ",data, 
        function(err, rows)
        {
          if (err){
            //If error
              res.status(400).json('Sorry!!Unable To Add'));
              console.log("Error inserting : %s ",err );
             }
         else
          //If success
          res.status(200).json('Book Added Successfully!!')
        });
        });
         app.listen(3000, ()=> {
      console.log(`app is running on port 3000`);
});

现在让我们看看 React Js 上的前端代码:

import React from 'react';
export default cl AddBook extends React.Component {
constructor(){
        super();
        this.state = {
            bookname:'',
            autr:'',
        };
    }
updateInfo = (event) =>{
        let fieldName = event.target.name;
        let fieldValue = event.target.value;
        if(fieldName === 'bookname') {
            this.setState({bookname: fieldValue});
        }
        else if(fieldName === 'autr'){
            this.setState({autr:fieldValue});
        }
};
addBook=(e)=>{
 let {bookname,autr}=this.state;
 fetch('localst:3000/add_book', {
      metd: 'post',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({
        bookname:bookname,
        autr:autr,
      })
    }).then(response=>response.json()).then(data=>{
         window.alert(data)
         //Do anything else like Toast etc.
})
}
render(){
return(
<div clName="add_book">
 <div>
    <label>Book Name</label>
    <input onChange={this.updateInfo} name="bookname" value{this.state.bookname}/>
 </div>
 <div>
  <label >Autr</label>
  <input onChange={this.updateInfo} name="autr" value={this.state.autr}/>
</div>
<on onClick={this.addBook}>Add</on>                                 
</div>
    )
}
 }
0

下面是一个简单的例子,建立一个连接到 mysql。

var mysql = require('mysql')
var connection = mysql.createConnection({
st     : 'localst',
user     : 'dbuser',
pword : 's3kreee7',
database : 'my_db'
});
connection.connect()
connection.query('SELECT 1 + 1 AS solution', function (err, rows, fields) {
if (err) throw err
console.log('The solution is: ', rows[0].solution)
})
connection.end()
Helpful guide to integrate popular Node.js modules for DBs
0
**On REACT**
import React, { Component } from 'react';
import axios from "axios";
import {
  BrowserRouter as Router,
  Route,
  Link,
  Redirect,
  withRouter
} from "react-router-dom";
import createHistory from "history/createBrowserHistory"
//import isLoggedIn from '../../helpers/is_logged_in';
cl Login extends Component {
   constructor(props) {
    const history = createHistory();
      super(props);
     // this.islogin = this.islogin.bind(this);
      this.signIn = this.signIn.bind(this);
      this.handleEmailChange = this.handleEmailChange.bind(this);
      this.handlePwordChange = this.handlePwordChange.bind(this);
      this.state = {
        email:'',
        pword:'',
        redirectToReferrer: false
      };
    }
    signIn(){
      const history = createHistory()
      const location = history.location;
              console.log(location);
    //  alert(this.state.email);
      axios.post('http://192.168.1.35:3012/users', {
        email: this.state.email,
        pword: this.state.pword
      })
      .then(function (response) {
       // console.log(response.data[0].id);
       // console.log(response.data.email);
        var das =  localStorage.setItem('sessionid', response.data[0].id);
        var das =  localStorage.setItem('myData', response.data[0].name);
       var da =  localStorage.getItem('myData');
      var myid =  sessionStorage.setItem('myid', response.data[0].id);
      //alert(da);
       //history.go('/dash');
       
      })
      .catch(function (error) {
        console.log(error);
      });
       this.setState({ redirectToReferrer: true });
    }
    handleEmailChange(e){
      this.setState({email:e.target.value})
    }
    handlePwordChange(e){
      this.setState({pword:e.target.value})
}
  render() {
    console.log('11111');
          const myid =  sessionStorage.getItem('myid');
      const { from } = this.props.location.state || { from: { pathname: "/dash" } };
    const { redirectToReferrer } = this.state;
    if (redirectToReferrer || myid !=null) {
          console.log('22222');
      return <Redirect to={from} />;
    }
else{
    return (
            <form clName="form-signin" history={this.props.history}>
                <h2 clName="form-signin-heading"> Please sign in </h2>
                <label clName="sr-only"> Email address
                </label>
}
<input type="email" onChange={this.handleEmailChange} id="inputEmail" clName="form-control" placelder="Email address" required />              
  <label htmlFor="inputPword" clName="sr-only"> Pword</label>
<input type="pword" onChange={this.handlePwordChange} id="inputPword" clName="form-control" placelder="Pword" required />  
<on clName="btn btn-lg btn-primary btn-block" onClick={this.signIn} type="on">Sign in</on>            
            </form> 
    );
  }
}
}
export default withRouter(Login); 
**On Express**
var express = require('express');
var bodyPr   = require('body-pr');
var app = express();
 var fs = require('fs');
var formidable = require('formidable');
var busboy = require('connect-busboy');
var cors = require('cors')
var router = express.Router();
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
var mysql = require('mysql')
var connection = mysql.createConnection({
  st     : 'localst',
  user     : 'root',
  pword : 'test',
  database : 'example'
});
connection.connect(function(err) {
  if (err) throw err
 // console.log('You are now connected...')
})
/* POST users listing. */
router.post('/', function(req, res, next) {
  console.log(req.body.email);
      user_sql = "INSERT INTO table_name VALUES (req.body.name, req.body.pword);
     console.log(user_sql)
  connection.query(user_sql, function (err, rows, fields) {
  if (err) throw err
console.log(rows)
res.end(JSON.stringify(rows));
   // res.json(rows);
});
   
       
 
});
module.exports = router;

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(672)
质量手册和程序文件的区别:Dropbox中的应用程序文件夹
下一篇

相关推荐

  • EmberJS和 ReactJS可以一起使用吗

    我一直在看 React 和 Ember,他们似乎是很好的框架。有没有办法让他们一起工作,或者他们有更多的非此即彼的关系?…

    2024-10-04 08:23:23
    0 60 31
  • 数据库的连接:ReactJS与数据库的连接

    关于数据库的连接的问题,在add database to react app中经常遇到,我想从前端反应 js 表单获取数据,并使用后端快递插入到 mysql 数据库。你能告诉我从前端到后端的流程简单的一个字段形式使用反应 js,然后插入数据库。…

    2024-07-31 01:16:35
    0 29 54
  • vue 导入css: #333; }

    示例示例在vue中导入css可以使用``标签,也可以通过`import`语句引入外部css文件。使用``标签:…

    2023-03-28 07:21:08
    0 33 24
  • cvc单词和cvce单词对照表 Unlocking the Potential of Language

    CVC单词和CVCE单词对照表:CVC单词:…

    2023-05-03 14:28:30
    0 64 28
  • vue 触发click:如何使用 Vue 来触发 Click 事件

    Vue 中可以使用 v-on 指令来触发 click 事件,代码如下:…

    2023-05-14 01:21:52
    0 66 88
  • 小米路由器r1d:Webpack+AngularJS 1.6ui 路由器1.x未正确加载ui路由器

    关于小米路由器r1d的问题,在uirouter angularjs中经常遇到,我正在使用新的 UI 路由器。…

    2024-04-10 07:56:45
    0 34 48
  • Dft是什么:矩形窗的 DFT(rectangular window well)

    关于Dft是什么的问题,在rectangular window well中经常遇到,我正在尝试计算矩形窗口的 DFT 的幅度和角度。下面的代码得到我期望的幅度,但相位看起来是错误的。任何人都可以帮我弄清楚我做错了什么?谢谢!…

    2024-03-12 16:10:07
    0 88 93
  • Vs编程入门:React入门套件vsNext.js

    关于Vs编程入门的问题,在nextjs starter kit中经常遇到,我们正在研究框架 / 库来使用 React 构建一个内容发布网站,关键要求是通常的东西 SEO,页面速度,以及易于服务器端渲染。有没有人在生产环境中使用React Starter Kit的中型应用程序的经验?有没有人尝试过Next.js?…

    2024-03-04 08:06:15
    0 43 38

发表评论

登录 后才能评论

评论列表(45条)