由于某些原因,我无法让AXIOS连接到数据库。它是一个MSQL服务器,当我在服务器文件中使用app.get时,我可以得到返回的数据,但当我使用快速数据库连接时,它就不会持久。在Postman中,我可以返回一个结果,其中我在server.js上的所有代码都接收整个表。这就是我想要的。当将所有内容移动到AXIOS并将其路由到我的服务器上以减少代码时,不再返回任何内容。除了我得到ReferenceError:数据库没有在nodemon中定义之外,没有任何东西被破坏。
主页
const express = require('express')
const app = express()
const mysql = require('mysql')
const morgan = require('morgan')
//middleware
app.use(express.json())
app.use(morgan('dev'))
//Connect to DB
const db = mysql.createConnection({
user : 'root',
password : '******',
database : 'avengers'
})
db.connect((err) => {
if(err){
console.log(err)
}
console.log('MySql Connected...')
})
//Routes
app.use('/avengers', require('./routes/avengerRouter.js'))
//error handling
app.use((err, req, res, next) => {
console.log(err)
return res.send({errMsg: err.message})
})
app.listen(9000, () => {
console.log("The server is running on port 9000")
})
Server.js
import React, {useState, useEffect} from 'react'
import axios from 'axios'
import AvengersTable from './AvengerTable.js'
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
export default function Main(){
const [tableState, setTableState] = useState('')
useEffect(() => {
async function getTableData() {
axios.get('/avengers')
await delay(300)
.then(res => {
// setTableState(res.data)
console.log(res)
})
.catch(err => console.log(err.response.data.errMsg))
} getTableData()
}, [])
return (
<div className="Main">
{/* <AvengersTable tableState={tableState}/> */}
</div>
)
}
AvengerRouter.js
const express = require('express');
const avengerRouter = express.Router();
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
avengerRouter
// all data from avengers table http://localhost:9000/avengers
.get('/', (req, res) => {
let sql = 'SELECT * FROM avengers.avengers'
db.query(sql, (err, result) => {
if(err) console.log(err)
console.log(result)
})
})
module.exports = avengerRouter;
1条答案
按热度按时间mqkwyuun1#
创建一个名为
db.js
的文件,该文件包含一个数据库连接。在
HomePage
上使用数据库最后在你的
avengerRoute.js
中使用