我在Heroku上運行的應用程式,獨立的后面和前面
后面:node express mysql
前:vue
應用程式作業正常,但我有一個錯誤隨機:有時我從前端插入重復記錄。(我猜錯誤來自前端)
從前端我使用 fetch 添加記錄
const requestOptions = {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
data: data,
...: ...,
}),
};
const response = await fetch(`url_backend_heroku/api/add`, requestOptions);
記錄插入正確,但有時插入重復,下一個 id 正確
在某些情況下,fetch 是否會發送 2 個請求?
在我的本地機器上部署 heroku 之前,我從不重復記錄
我已經走了好幾天了,但我找不到為什么會發生這種情況
uj5u.com熱心網友回復:
是的,您可能在某處發送 2 個請求。將日志放在特定端點上的 heroku BACK 中以查看到底發生了什么。此外,在從前端請求時,請檢查開發人員工具中的網路選項卡,看看您是否真的兩次觸發請求。因為正如您所說的重復記錄但它們具有正確的 ID,所以只能表示您所說的。
此外,這可能是也可能不是,但是 heroku 服務器在不活動時休眠,因此這可能會導致問題,但我不完全確定,必須為此檢查代碼和環境。
uj5u.com熱心網友回復:
查看heroku(回傳)日志,它看起來像是正常插入了2條記錄,
查看瀏覽器中的網路選項卡,只出現1個請求:OPTIONS(204)和POST(200)
表有一個id是主鍵什么都沒有復雜
,另一方面,我在DYNOS業余愛好計劃,沒有睡眠時間(如果可用)
放在這里部分或我的后端
資料庫.js
const mysql = require('mysql')
const { promisify } = require('util')
const config = { database keys }
const pool = mysql.createPool(config);
pool.getConnection((err: any, connection: any) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('DATABASE CONNECTION WAS CLOSED')
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('DATABASE HAS TO MANY CONNECTIONS')
}
if (err.code === 'ECONNREFUSED') {
console.error('DATABASE CONNECTION WAS REFUSED')
}
}
if (connection) connection.release()
console.log('DB is Connected')
return
})
pool.query = promisify(pool.query)
export default pool
控制器.js
import pool from '../database';
public async insert(req: Request, res: Response) {
let body = req.body
try {
const response = await pool.query('SELECT MAX(id) 1 as idNew FROM table')
let data = {Id: response[0].idNew, ...body}
//before it had an auto_increment id and it also failed
const result = await pool.query('INSERT INTO table set ?', [data])
res.json({
insertId: response[0].idNew,
message: "Saved OK"
})
} catch (error) {
console.log("error", error)
return res.status(500).send("error")
}
}
can it be a fetch problem? don't try yet to use axios for example
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346267.html
標籤:javascript mysql 英雄 拿来
