我需要通过向后发送位置数据的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中?
答案 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')
之外的数据的调用都会得到空的或不确定的结果。
希望这对某人有帮助。