javascript - 通过http请求mysql插入表后记录丢失
问题描述
我正在尝试将数据插入到 aws 上的数据库中,即 mysql db。我能够将数据发送到端点,它显示了一段时间,但随后消失了。我通过反应发送它。下面是我正在使用的代码:
addRecord =() => {
fetch(`my_ip:4000/data/add?time=${moment().format("YYYY-MM-DD HH:mm:00")}&lat=${this.state.lat}&lon=${this.state.lon}&floor=${this.state.floor}`)
.catch(err => console.error(err))
}
API 端点位于以下节点中:
//add a record
app.get('/data/add', (req, res) => {
const { time, lat, lon, floor } = req.query;
const INSERT_RECORDS = `INSERT INTO table_x(time, lat, lon, floor) VALUES('${time}','${lat}','${lon}',${floor})`;
connection.query(INSERT_RECORDS, (err, results) => {
if(err) {
return res.send(err)
} else {
return res.send('successfully added')
}
});
});
记录在表中出现大约 5 秒钟,然后消失。我相信 sql 中的“提交”正在发生一些事情,但不知道如何解决这个问题。
试图
我试图切换到帖子,因为我在其他一些帖子中看到了这一点,例如:
但仍然无法正常工作。如果我使用app.get()
它可以工作,但数据不会再次保留。它在我的数据库中出现了大约十秒钟,然后它就像被删除一样消失了:
const SELECT_ALL_PRODUCTS_QUERY = 'SELECT * FROM my_table';
const express = require('express');
const cors = require('cors');
const mysql = require('mysql');
const app = express();
connection.connect(err => {
if(err) {
return err;
} else {
console.log('success')
}
});
app.use(cors());
//create api directions
app.get('/', (req, res) => {
res.send('go to /products to see products')
});
app.listen(4000, () => {
console.log('Server listening on port 4000')
});
//call query to select all
app.get('/products', (req, res) => {
connection.query(SELECT_ALL_PRODUCTS_QUERY, (err, results) => {
if(err) {
return res.send(err)
} else {
console.log(results)
return res.json({
data: results
})
}
})
})
app.post('/add', (req, res) => {
console.log(req.query);
var my_data = {
time: req.query.time,
lat: req.query.lat,
lon: req.query.lon,
floor: req.query.floor
}
// now the createStudent is an object you can use in your database insert logic.
connection.query('INSERT INTO my_table SET ?', my_data, function (err, resp) {
if (err) throw err;
// if there are no errors send an OK message.
res.send('Saved successfully');
});
});
当我尝试通过以下方式添加记录时:
http://my_ip:4000/add?time=2019-10-01%2009:00:00&lat=43.07&lon=-73.08&floor=1
我得到错误:
无法获取/添加
再一次,如果我使用app.get()
它可以工作但不会持续存在
当我通过 addRecord 函数插入数据时,我在后端终端上看到以下控制台日志:
Server listening on port 4000
success
{ time: '2019-11-24 17:16:00',
lat: '43',
lon: '-73.1',
floor: '0' }
所以似乎数据已收到。但我没有看到“保存成功”
解决方案
推荐阅读
- haskell - Haskell 中 TUI 的无限循环和中断
- bluetooth-lowenergy - 外设如何在蓝牙连接中获取中央设备名称
- android - 哪种类型的连接允许服务器将数据发送到客户端而无需客户端先询问?
- r - 如何按组进行配对t检验并保存结果?
- javascript - 如何从 WebAssembly 模块中检测浏览器信息?
- google-cloud-platform - 更改 BigQuery 中记录列的类型
- javascript - 用户断开连接后如何重新连接到聊天应用程序(socket js)
- jquery - 如何在 jQuery 的 .each 循环中添加字符串
- r - 在 R 中将表(2 维)转换为向量(1 维)
- go - go中的dialogflow webhook