2013-07-27 39 views
1

我创建了一个集合,我称之为图形服务器上仍然存在,这是服务器代码:项目添加到收藏获取客户端上删除,但

Graphs = new Meteor.Collection("graphs"); 
Meteor.publish("graphs", function(){ 
    return Graphs.find(); 
}); 

在客户端上我尝试存储的东西在此图由:

Graphs = new Meteor.Collection("graphs"); 
Graphs.insert(graph); 

而且我看到流星使用蒙戈它插在服务器端数据库:

db.graphs.count() 

返回“1”

在客户端我也有这样的代码来听上进行更改:

Graphs.find().observe({ 
    added: function(graph) { 
     console.log("added graph"); 
    }, 
    removed: function(graph) { //removed gets called! 
     console.log("removed graph"); 
    }, 
    changed: function(graph) { 
     console.log("changed graph"); 
    } 
}); 

但在这里它变得有趣,输出的是“加图”紧跟“删除图形” 。

为什么我将Graph插入并传递给服务器,但是在客户端中,它被添加并删除了?

对Graphs.findOne()的后续调用返回“undefined”,就像它仍然是空的! 任何有关在哪里寻找更多线索的想法?

编辑:

如果我把一个破发点中的 “删除” 上面,我得到以下堆栈跟踪:

Graphs.find.observe.removed(graphwiki.js a150874e1ce3cd4a32d7db02a03cff5239d1ae6e:548) cursor.observeChanges.removed(?minimongo.js daa88dc39d67b40b11d6d6809d72361f9ef6a760:909) (匿名函数)(minimongo.js daa88dc39d67b40b11d6d6809d72361f9ef6a760:275)(?fiber_stubs_client.js 52687e0196bc1d3184ae5ea434a8859275702d94:30) _.extend.runTask _.extend.flush( fiber_stubs_client.js?52687e0196bc1d3184ae5ea434a8859275702d94 :58) _.extend.drain(fiber_stubs_client.js 52687e0196bc1d3184ae5ea434a8859275702d94:?66) LocalCollection.remove(minimongo.js daa88dc39d67b40b11d6d6809d72361f9ef6a760:500) self._connection.registerStore.update(collection.js 682caa185350aa26968d4ffc274579a33922f0e6:109) 商店(匿名函数)(livedata_connection.js 5d09753571656c685bb10c7970eebfbf23d35ef8:404)。 _.each.self._updatesForUnknownStores(匿名函数)(livedata_connection.js 5d09753571656c685bb10c7970eebfbf23d35ef8:984) 。每。 .forEach(?underscore.js ed2d2b960c0e746b3e4f9282d5de66ef7b1a2b4d:78) (匿名功能)(livedata_connection.js 5d09753571656c685bb10c7970eebfbf23d35ef8:983) 。每。 .forEach(?underscore.js ed2d2b960c0e746b3e4f9282d5de66ef7b1a2b4d:86) _.extend._livedata_data(livedata_connection.js 5d09753571656c685bb10c7970eebfbf23d35ef8:980) 的onMessage(livedata_connection.js 5d09753571656c685bb10c7970eebfbf23d35ef8:208)? (匿名函数)(stream_client_sockjs.js 6ef3fd3e8e39c1c357993f6936512726288ad127: 179) 。每个。 .forEach(?underscore.js ed2d2b960c0e746b3e4f9282d5de66ef7b1a2b4d:78) self.socket.onmessage(stream_client_sockjs.js 6ef3fd3e8e39c1c357993f6936512726288ad127:178) REventTarget.dispatchEvent(?sockjs-0.3.4.js 6f1db89d6b451d0faf6b7103782d92527931e66a:86) SockJS。_dispatchMessage(sockjs-0.3.4.js 6f1db89d6b451d0faf6b7103782d92527931e66a:1039) SockJS._didMessage(sockjs-0.3.4.js 6f1db89d6b451d0faf6b7103782d92527931e66a:1097) that.ws.onmessage(sockjs-0.3.4.js 6f1db89d6b451d0faf6b7103782d92527931e66a:1238)

这是否提供了什么可能是错误的提示?

我可以在同一时间插入其他集合中,但不会获得角色备份! /Hans

+0

您的描述听起来像变化被服务器拒绝。每次在客户端执行插入操作时,服务器上的计数是否增加?你在服务器上有一个'Graphs.allow()'规则,允许客户端插入? – user728291

+0

谢谢! 我对我的应用程序和其他收集工作的访问没有任何限制。但是我在服务器上添加了一个Graphs.allow(),它在所有情况下都返回true,并且没有任何变化。 服务器数据库上的计数增加,所以插入运行正常。由于“删除”呼叫,它们从未在客户端反映。 添加了一个堆栈跟踪,如果这可以帮助任何人给我更多的提示在哪里看。 – hansbrattberg

回答

2

在客户端,您是否订阅“图表”?我认为客户会以其他方式将其从本地收藏中删除,因为文档不应按照任何订阅进行收集。

对Graphs.find()的后续调用返回“undefined”,就像它仍然是 empty!?!

我确实发现这个奇怪。不是Collection.find()总是返回一个游标?

+0

谢谢,订阅解决了! – hansbrattberg

+0

我的意思是Graphs.findOne()返回“undefined”not find(),我误写了。现在更正。 – hansbrattberg

相关问题