添加到集合的项目将在客户端上删除,但仍存在于服务器上

时间:2013-07-27 22:13:06

标签: meteor

我创建了一个我称之为Graph的集合,这是服务器代码:

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

在客户端上,我尝试通过以下方式将内容存储在此图表中:

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

我看到它使用meteor mongo插入服务器端db:

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) _.extend.runTask(fiber_stubs_client.js?52687e0196bc1d3184ae5ea434a8859275702d94:30) _.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) store。(匿名函数)(livedata_connection.js?5d09753571656c685bb10c7970eebfbf23d35ef8:404) _.each.self._updatesForUnknownStores。(匿名函数)(livedata_connection.js?5d09753571656c685bb10c7970eebfbf23d35ef8:984) .each。 .forEach(underscore.js?ed2d2b960c0e746b3e4f9282d5de66ef7b1a2b4d:78) (匿名函数)(livedata_connection.js?5d09753571656c685bb10c7970eebfbf23d35ef8:983) .each。 .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) .each。 .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)

这会对可能出错的事情提出任何暗示吗?

我可以在没有角色的同时插入其他集合中! /汉斯

1 个答案:

答案 0 :(得分:2)

在客户端,您订阅“图表”吗?我认为客户端会将其从本地集合中删除,因为根据任何订阅,文档不应该在集合中。

  

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

我觉得这很奇怪。 Collection.find()总是返回游标吗?