使用nodejs连续存储“获取”并将数据存储在mongodb中

时间:2019-01-29 11:24:02

标签: javascript node.js mongodb gps

我需要通过向后发送位置数据的API不断发出此http.get请求

所以我尝试编写一个基本的getreuest来检查数据是否通过,但是问题是我需要gps设备每秒发送一次连续循环的数据。

http.get(_url2, res =>{
    let body='';

        res.on("data", data =>{
            body+=data;
        })
     res.on("end",()=>{
        body = JSON.parse(body);
        gpsData.push(body.data);
        console.log('gpsData Array : ',gpsData)

    })
}) 

我将其注销到控制台,    $ node server3.js gpsData Array : [ [ { imei: '86851212020143921', device_info: 0, device_info_new: 0, seconds: 0, gps_time: 1548760740, sys_time: 1548760744, heart_time: 1548760744, server_time: 1548760748, lng: 33.756899, lat: -13.973598, course: 160, speed: 7, status: '010000fb000000000000000000000000', location: 'GPS', acc: '1', acc_seconds: 335, voice_status: -1, voice_gid: 0 } ] ]

表明它正在工作 如何将这段代码放入一个异步WebSocket中,该WebSocket不断获取该数据,然后将其存储在具有给定字段的MongoDB中?

1 个答案:

答案 0 :(得分:0)

好,所以我找到了一个解决方案,最好的方法(以我的观点)是使用setInterval()函数,将HTTP请求放入函数中以设置要在数据库中插入的每单位时间的次数,然后mongodb默认情况下从那里接受对象,因此,如果将对象返回给mongodb将会为您保存对象,这是代码

MongoClient.connect('mongodb://127.0.0.1:27017/gpsapp2', function(err,client){
if(err) return console.log(err)
db = client.db('gpsapp2')
let counter =0
 setInterval(()=>{
        http.get(_url2, res =>{
        let body='';

        res.on("data", data =>{
                body+=data;
            })
        res.on("end",()=>{
            body = JSON.parse(body);

            //console.log(counter++,'Records inserteerd')
            db.collection('gpsdata').save(body.data[0]);

        })
    })


},1000);
从网址

http.get解析正文,然后保存到集合。不要忘记API调用是异步的,因此任何对res.on('end')之外的数据的调用都会得到空的或不确定的结果。

希望这对某人有帮助。

相关问题