Rethinkdb Node.JS .changes()不需要的循环

时间:2017-03-16 10:27:45

标签: node.js socket.io rethinkdb

我遇到了Node JS和rethinkdb模块的问题。 我正在为我的论文开发程序

db.js的代码:

var r = require("rethinkdb"); 
var host = "localhost";
var db = "example";
var port = 28015;
class dbs{
    connectToDb(callback){
        r.connect({
        host:host,
        port:port,
        db:db
        },function(err,connection){
             return callback(err,connection);
          });
    }

  streamAllData(tableName,callback){
  this.connectToDb(function(err,conn){
    r.table(tableName).changes().run(conn,function(err,cursor){
      if(err){
        return callback(true,err);
      }
      else{
        cursor.next(function(err,rows){
          return callback(null,rows);
        });

      }
    });
  });
}
}

以及来自server.js

的这些代码
var dbrs = require("./db");
var rdb = new dbrs();
var io = require("socket.io").listen(https.createServer(options,app).listen(port));
io.on("connection",function(socket){
   rdb.streamAllData("userlocation",function(err,data){
      socket.emit("broadcast:userlocation",data);
   });
});

结果总是发送7个相同的数据。实际上手机发送坐标到服务器是干净的配置间隔。

当我试图将驱动程序位置绘制到地图时,这个不需要的循环总是在我的浏览器中崩溃。

enter image description here

这是Chrome控制台的截图

1 个答案:

答案 0 :(得分:1)

您的方法名称streamAllDatacursor.next的使用不符,后者仅提取单个结果。也许您打算使用cursor.each代替?

请参阅https://www.rethinkdb.com/api/javascript/next/