Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过http请求mysql插入表后缺少记录_Javascript_Mysql_Reactjs_Fetch - Fatal编程技术网

Javascript 通过http请求mysql插入表后缺少记录

Javascript 通过http请求mysql插入表后缺少记录,javascript,mysql,reactjs,fetch,Javascript,Mysql,Reactjs,Fetch,我试图将数据插入aws上的数据库,一个mysql数据库。我能够将数据发送到端点,它会显示一段时间,但随后消失。我通过react发送。下面是我正在使用的代码: 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.

我试图将数据插入aws上的数据库,一个mysql数据库。我能够将数据发送到端点,它会显示一段时间,但随后消失。我通过react发送。下面是我正在使用的代码:

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中的“提交”有问题,但不知道如何解决这个问题

尝试

我尝试切换到post,正如我在其他一些帖子中看到的:

但仍然不起作用。如果我使用
app.get()
它会工作,但数据不会持久。它在我的数据库中出现了大约10秒钟,然后就消失了,好像被删除了一样:

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' }

看来数据已经收到了。但我看不到“保存成功”

在这短暂的一段时间里,您究竟在哪里看到它的显示?在aws数据库中?还是本地数据库?(我注意到您在前端使用fetch with
localhost:4000
,因此我假设您在本地访问后端和本地数据库……那么您是否在正确的数据库中查找数据(值得仔细检查)还想知道为什么要使用GET端点来发布数据…所以API端点在aws中。我没有使用localhost,而是在端口4000上通过aws上的react访问API。我应该使用POST vs GET进行插入吗?如果是这样,我将如何更改代码?通常情况下,您会使用POST端点并在其中(或者在一个中断的
控制器中
)调用类似于
record.save()
(在您可能想要执行的任何验证之后->在将所有内容放入数据库之前始终验证和清理所有内容…特别是如果它来自用户输入!!!要添加到上述内容,您需要将
record
作为一个类(您可以在模型中这样做)并将其实例化为
const record=new record(req.body.recordData)
(或者在post请求主体上传递数据,然后才能对其使用
record.save()
,因为
.save()
将是一个类函数。如果你是新手,并且仍在学习这方面的知识似乎很多,不要担心你会掌握其中的诀窍,但你目前所做的并不是这样做的,即使它在技术上可行……谷歌搜索一下设置控制器和模型,你就会掌握其中的诀窍!回到这一点,数据确实如此不只是在数据库中消失而不显式删除它…这将是一个数据库很少出现的大规模故障,我从来没有听说过…这是您所在代码中的某些内容(下一条评论…)