Node.js MongoDb可裁剪流媒体返回重复项
我有一些Node.js MongoDb可裁剪流媒体返回重复项,node.js,mongodb,sockets,angularjs,socket.io,Node.js,Mongodb,Sockets,Angularjs,Socket.io,我有一些MongoDb Capped集合,我正试图通过SocketIO将新条目(来自另一个进程)流式输出到我的页面,如下所示: 服务器端: ... var TickerSchema = new Mongoose.Schema({ bid : { type : Number }, ask : { type : Number }, mid : { type : Number }, last_price : { type : Number }, timestam
MongoDb Capped集合
,我正试图通过SocketIO
将新条目(来自另一个进程)流式输出到我的页面,如下所示:
服务器端:
...
var TickerSchema = new Mongoose.Schema({
bid : { type : Number },
ask : { type : Number },
mid : { type : Number },
last_price : { type : Number },
timestamp : { type : Date }
}, { capped: { size: 5242880, max: 1000, autoIndexId: true }});
var tickerStream = Ticker.find().tailable().stream();
ioserver.sockets.on('connection', function(socket){
clientsocket = socket;
tickerStream.on('data', function (doc) {
clientsocket.emit('ticker', doc);
}).on('error', function (err) {
console.log('error: '+err);
}).on('close', function () {
// the stream is closed
system.debug('close');
});
...
客户端:
var socket = io.connect('http://localhost');
function TickerController($scope, $http, $window)
{
$scope.ticker = null;
$scope.init = function(){
}
$window.socket.on('ticker', function(ticker){
console.log(ticker);
$scope.$apply(function(){
$scope.ticker = ticker;
});
});
}
但当我运行应用程序时,我会得到新事件,但我会得到2-3个事件,而不是只插入1个新文档
我已经检查了集合,它没有重复的-我在同一个套接字上有多个通道-这可能是问题吗
取出$scope.$apply并重试。当我不使用
$scope.$apply时,页面上的这些项目不会得到更新。我不认为让我看看OK。。。尝试过它。。。没有更改,除了项目没有出现在页面上(在JADE
模板中),并且它们在控制台.log
语句中仍然是重复的文档。