Javascript 与nodejs和mysql的连接
我有一个来自“”的todo list应用程序,它有MongoDB数据库,所以我试图在MySQL中更改它,但我很难使用它 app.jsJavascript 与nodejs和mysql的连接,javascript,mysql,node.js,reactjs,express,Javascript,Mysql,Node.js,Reactjs,Express,我有一个来自“”的todo list应用程序,它有MongoDB数据库,所以我试图在MySQL中更改它,但我很难使用它 app.js import React, { Component } from "react"; import { BrowserRouter as Router, Route, Link } from "react-router-dom"; import "bootstrap/dist/css/bootstrap.min.css"; import CreateTodo fro
import React, { Component } from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import "bootstrap/dist/css/bootstrap.min.css";
import CreateTodo from "./components/create-todo.component";
import EditTodo from "./components/edit-todo.component";
import TodosList from "./components/todos-list.component";
import logo from "./logo.png";
var express = require('express');
var bodyParser = require('body-parser');
var connection = require('./backend/config/connection');
var routes = require('./backend/controllers/routes');
var app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
connection.init();
routes.configure(app);
var server = app.listen(4000, function(){
console.log('Server listening on port ' + server.address().port);
});
class App extends Component {
render() {
return (
<Router>
<div className="container">
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="https://www.youtube.com" target="_blank">
<img src={logo} width="30" height="30" alt="CodingTheSmartWay.com" />
</a>
<Link to="/" className="navbar-brand">Aftab Todo App</Link>
<div className="collpase navbar-collapse">
<ul className="navbar-nav mr-auto">
<li className="navbar-item">
<Link to="/" className="nav-link">Todos</Link>
</li>
<li className="navbar-item">
<Link to="/create" className="nav-link">Create Todo</Link>
</li>
</ul>
</div>
</nav>
<br/>
<Route path="/" exact component={TodosList} />
<Route path="/edit/:id" component={EditTodo} />
<Route path="/create" component={CreateTodo} />
</div>
</Router>
);
}
}
export default App;
}
在后端,我还尝试将程序分为三部分
1.config
=>connection.js
var mysql = require('mysql');
var express = require('express');
var bodyParser = require('body-parser');
var connection = require('./backend/config/connection');
var routes = require('./backend/controllers/routes');
var app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
connection.init();
routes.configure(app);
function Connection() {
this.pool = null;
this.init = function() {
this.pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: 'system',
database: 'db'
});
};
this.acquire = function(callback) {
this.pool.getConnection(function(err, connection) {
callback(err, connection);
});
};
}
module.exports = new Connection();
2.控制器
=>routes.js
var todo = require('../models/todo');
module.exports = {
configure: function(app) {
app.get('/todo',function(req,res) {
todo.get(res);
});
app.get('/todo/:id',function(req,res) {
todo.getByID(req.params.id,res);
});
app.post('/todo',function(req,res) {
todo.create(req.body,res);
});
app.put('/todo/:id',function(req,res) {
todo.update(req.body.name,req.params.id,res);
});
app.delete('/todo/:id',function(req,res) {
todo.delete(req.params.id,res);
});
}
};
3.模型
=>todo.js
var connection = require ('../config/connection');
function Todo() {
this.get = function(res) {
connection.acquire(function(err,con) {
con.query('select * from todos', function(err,result) {
con.release();
res.send(result);
console.log("Get successful");
});
});
};
this.getByID = function(id,res) {
connection.acquire(function(err,con) {
con.query('select * from todos where Serial_no = ?', id, function(err,result) {
con.release();
res.send(result);
console.log("Get by ID successful");
});
});
};
this.create = function(todo,res) {
connection.acquire(function(err,con) {
con.query('insert into todos set ?', todo, function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO creation fail'});
} else {
res.send({status:0, message:'TODO create success'});
console.log("Post successful");
}
});
});
};
this.update = function(todo,id,res) {
connection.acquire(function(err,con) {
con.query('update todos set todo_completed = ? where Serial_no = ?', [todo, id], function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO update fail'});
} else {
res.send({status:0, message:'TODO update success'});
console.log("Put successful");
}
});
});
};
this.delete = function(id,res) {
connection.acquire(function(err,con) {
con.query('delete from todos where Serial_no = ?', id, function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO delete fail'});
} else {
res.send({status:0, message:'TODO delete success'});
console.log("Delete successful");
}
});
});
};
};
module.exports = new Todo();
有什么问题?你有错误吗?如果您有错误,请在问题中添加主题,或解释更多您面临的问题。我认为他正在寻找git repo的解决方案:)请查看代码并指导我在哪里犯了错误。我有很多错误。当我使用server.js时,我的更新MySQL查询不起作用,我不知道如何获取网页上的数据@Ma'mounothmanI在app.js、create-todo.cpmopnent.js、edit-todo.cpmopnent.js和todo-list.component.js中没有任何问题。我在server.js中遇到了问题,如何使其模块@deepkakkar存在mysql数据库?您是否授予该用户对数据库的访问权限?您是否创建了所需的mysql表?你的控制台应该告诉你一些事情。有什么问题吗?你有错误吗?如果您有错误,请在问题中添加主题,或解释更多您面临的问题。我认为他正在寻找git repo的解决方案:)请查看代码并指导我在哪里犯了错误。我有很多错误。当我使用server.js时,我的更新MySQL查询不起作用,我不知道如何获取网页上的数据@Ma'mounothmanI在app.js、create-todo.cpmopnent.js、edit-todo.cpmopnent.js和todo-list.component.js中没有任何问题。我在server.js中遇到了问题,如何使其模块@deepkakkar存在mysql数据库?您是否授予该用户对数据库的访问权限?您是否创建了所需的mysql表?你的控制台应该告诉你一些事情。
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mysql = require('mysql');
const todoRoutes = express.Router();
const PORT = 4000;
app.use(cors());
app.use(bodyParser.json());
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'system',
database: 'db'
});
connection.connect(err => {
if (err) {
return err;
}
});
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
todoRoutes.get('/todos', (req, res) => {
connection.query("Select * from todos",
(err, result) => {
if (err) {
res.send(err)
}
console.log(result);
res.send({
data: result
});
}
)
});
app.get('/todos/:id', function (req, res) {
connection.query('select * from todos where Serial_no=?', [req.params.id], function (error, results) {
if (error) throw error;
res.end(JSON.stringify(results));
});
});
app.post('/todos/add', (req, res) => {
const Serial_no = req.body.Serial_no;
const todo_description = req.body.todo_description;
const todo_responsible = req.body.todo_responsible;
const todo_priority = req.body.todo_priority;
const todo_completed = req.body.todo_completed;
console.log(Serial_no, todo_description, todo_responsible, todo_priority, todo_completed);
const insertQuery = 'INSERT INTO todos (todo_description,todo_responsible,todo_priority,todo_completed) VALUES (?)';
connection.query(insertQuery, [[todo_description, todo_responsible, todo_priority, todo_completed]],
(err, result) => {
if (err) {
res.send(err)
}
else
res.status(200).send({
data: result, message: 'data have been added sucessfully.'
});
}
)
});
/*
app.post('/edit', (req, res) => {
connection.query('UPDATE todos SET todo_completed = ? WHERE Serial_no = ?', [todo_completed], function (error, results, fields) {
(err, result) => {
if (err) {
res.send(err)
}
console.log(result);
res.send({
data: result, message: 'data have been updated sucessfully.'
});
}
)
}
});
*/
app.post('/todos/update/:id',(req, res) => {
const Serial_no = req.body.Serial_no;
const todo_description = req.body.todo_description;
const todo_responsible = req.body.todo_responsible;
const todo_priority = req.body.todo_priority;
const todo_completed = req.body.todo_completed;
console.log(Serial_no, todo_description, todo_responsible, todo_priority, todo_completed);
connection.query('UPDATE todos SET todo_completed = ? WHERE Serial_no = ?', [todo_completed, Serial_no],
//const updateQuery =('UPDATE todos SET todo_description = ?, todo_responsible = ?, todo_priority = ?, todo_completed = ? WHERE Serial_no = ?',
//connection.query(updateQuery,{Serial_no: "", todo_description: "",todo_responsible: "",todo_priority: "",todo_completed: ""},
//connection.query('UPDATE todos SET todo_description = ?, todo_responsible = ?, todo_priority = ?, todo_completed = ? WHERE Serial_no = ? :Serial_no',
//{Serial_no: Serial_no, todo_description: todo_description,todo_responsible: todo_responsible,todo_priority: todo_priority,todo_completed: todo_completed});
//connection.query(updateQuery, [[Serial_no,todo_description, todo_responsible, todo_priority, todo_completed]],
(err, result) => {
if (err) {
res.send(err)
}
else
res.status(200).send({
data: result, message: 'data have been updated sucessfully.'
});
}
)
});
app.use('/todos', todoRoutes);
app.listen(PORT, function () {
console.log("Server is running on Port: " + PORT);
});
var mysql = require('mysql');
var express = require('express');
var bodyParser = require('body-parser');
var connection = require('./backend/config/connection');
var routes = require('./backend/controllers/routes');
var app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
connection.init();
routes.configure(app);
function Connection() {
this.pool = null;
this.init = function() {
this.pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: 'system',
database: 'db'
});
};
this.acquire = function(callback) {
this.pool.getConnection(function(err, connection) {
callback(err, connection);
});
};
}
module.exports = new Connection();
var todo = require('../models/todo');
module.exports = {
configure: function(app) {
app.get('/todo',function(req,res) {
todo.get(res);
});
app.get('/todo/:id',function(req,res) {
todo.getByID(req.params.id,res);
});
app.post('/todo',function(req,res) {
todo.create(req.body,res);
});
app.put('/todo/:id',function(req,res) {
todo.update(req.body.name,req.params.id,res);
});
app.delete('/todo/:id',function(req,res) {
todo.delete(req.params.id,res);
});
}
};
var connection = require ('../config/connection');
function Todo() {
this.get = function(res) {
connection.acquire(function(err,con) {
con.query('select * from todos', function(err,result) {
con.release();
res.send(result);
console.log("Get successful");
});
});
};
this.getByID = function(id,res) {
connection.acquire(function(err,con) {
con.query('select * from todos where Serial_no = ?', id, function(err,result) {
con.release();
res.send(result);
console.log("Get by ID successful");
});
});
};
this.create = function(todo,res) {
connection.acquire(function(err,con) {
con.query('insert into todos set ?', todo, function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO creation fail'});
} else {
res.send({status:0, message:'TODO create success'});
console.log("Post successful");
}
});
});
};
this.update = function(todo,id,res) {
connection.acquire(function(err,con) {
con.query('update todos set todo_completed = ? where Serial_no = ?', [todo, id], function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO update fail'});
} else {
res.send({status:0, message:'TODO update success'});
console.log("Put successful");
}
});
});
};
this.delete = function(id,res) {
connection.acquire(function(err,con) {
con.query('delete from todos where Serial_no = ?', id, function(err,result) {
con.release();
if (err) {
res.send({status:1, message:'TODO delete fail'});
} else {
res.send({status:0, message:'TODO delete success'});
console.log("Delete successful");
}
});
});
};
};
module.exports = new Todo();