使用 nodejs 连续存储 'get' 并在 mongodb 中存储数据
continuously store 'get' and store data in mongodb using nodejs
我需要从发回位置数据的 API 不断发出此 http.get 请求
所以我尝试写一个基本的 get reuest 来检查数据是否通过,问题是我需要它在一个连续的循环中,每秒 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 来连续获取数据,然后将其存储在具有给定字段的 MongoDB 中?
ok 所以我找到了一个解决方案,最好的(在我看来)方法是使用 setInterval()
函数,将 HTTP 请求放在函数中以设置每单位时间要插入多少次数据库,然后从那里 mongodb 默认接受对象,所以如果你 return 对象 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 来自 url,解析正文然后保存到集合中。不要忘记 API 调用是异步的,因此对 res.on('end')
之外的数据的任何调用都将得到空的或未定义的结果。
希望这对某人有所帮助。
我需要从发回位置数据的 API 不断发出此 http.get 请求
所以我尝试写一个基本的 get reuest 来检查数据是否通过,问题是我需要它在一个连续的循环中,每秒 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 来连续获取数据,然后将其存储在具有给定字段的 MongoDB 中?
ok 所以我找到了一个解决方案,最好的(在我看来)方法是使用 setInterval()
函数,将 HTTP 请求放在函数中以设置每单位时间要插入多少次数据库,然后从那里 mongodb 默认接受对象,所以如果你 return 对象 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 来自 url,解析正文然后保存到集合中。不要忘记 API 调用是异步的,因此对 res.on('end')
之外的数据的任何调用都将得到空的或未定义的结果。
希望这对某人有所帮助。