2013-07-27 42 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

相關問題