2013-03-24 97 views
1

我喜歡流星的一件事情是,客戶端的更新,插入和刪除操作會自動保存在服務器端。大多數時候這很棒。但是有時候你想要使用Meteor的集合來顯示邏輯,或者你想要特定的,分階段的'保存',用戶必須專門提交。因此,您想繼續使用集合進行渲染,但您不一定希望將這些更改保存爲到數據庫。與流星一起'保存'

也許一個例子將有助於說明這一點。

我有一個呈現指定地圖原點的窗體。

<template name='map'> 
<button class='select-origin'>Select Origin</button> 
{{#with currentMap}} 
    {{this.latitude}} - {{this.longitude}} 
{{/with}} 
</template> 

Template.map.helpers({ 
currentMap: function(){ return Maps.findOne(Session.get('currentMap')) }; 
}); 

而當我編輯地圖時,將從數據庫中讀取經緯度並進行適當的渲染。

但我也想讓用戶選擇一個新的地圖來源和更新模板,而不保存新的地圖來源。我希望用戶點擊地圖,然後我可以使用該地圖更新客戶端的集合,然後該集合將更新模板。但是我想要用戶專門點擊save,然後有新的緯度和經度保持在服務器上。在Backbone中這樣的東西很容易(其中setsave不同),但在流星中看起來並不容易。

有沒有人有處理這些情況的好策略?

+0

林有點困惑,如果你想要用戶更新地圖位置而不保存它,不能直接告訴地圖移動到不同的位置嗎?當他們按下保存,然後在服務器上更新它? – Akshat 2013-03-24 09:37:19

+0

有時候我可以做到這一點,但在示例中,我顯示我希望模板使用新選擇的地圖位置進行更新。我想使用這個模板_without_不得不將新的位置保存到數據庫。我想臨時設置屬性,而不是_saving_屬性。 – bento 2013-03-24 18:18:29

回答

1

對於這類問題,我用的是Session對象

你已經讓你的當前地圖中的會話。您可以將所有更改應用於Session中的對象,並且一旦用戶單擊保存,更新MiniMongo實例並讓Meteor更新服務器。

我不知道是什麼屬性的CurrentMap對象包含,在你的代碼沒有顯示設置操作,但似乎你可以取代

Template.map.helpers({ 
currentMap: function(){ return Maps.findOne(Session.get('currentMap')) }; 
}); 

Template.map.helpers({ 
currentMap: function(){ return Session.get('currentMap') }; 
}); 
+0

感謝您的想法。我不知道對象可以(或應該)存儲在'Session'中。我會試試這個。 – bento 2013-03-24 18:24:44