在流星中部分更新会话变量?

时间:2015-06-02 12:46:19

标签: meteor

我认为我可能会遗漏一些东西。我已经将用户的产品订单表格的全部内容存储在会话变量中。

var orderFormContents = {
  numDoors: 4
  numWheels: 4
  numSeats: 5
};

Session.set("orderFormContentsSessionVar", orderFormContents);

如何更新orderFormContentsSessionVar中仅一个键的值,例如numDoors

我不想覆盖会话var。

的整个现有内容

我希望能够做到这样的事情:

Session.set("orderFormContentsSessionVar.numDoors", 2);

相当于_.extend

的东西

更新

按照下面的答案示例,我刚刚为它编写了一个函数:

var updateSession = function(sessionVarName, updateParams){
  var obj = Session.get(sessionVarName);
  _.extend(obj, updateParams);
  Session.set(sessionVarName, obj);
  console.log("updated session name: ", sessionVarName, "new session contents: ", Session.get(sessionVarName));
};

2 个答案:

答案 0 :(得分:2)

像你提议的那样使用:

var obj = Session.get("orderFormContentSessionVar");
Session.set("orderFormContentsSessionVar", _.extend(obj, {numDoors: 2}));

答案 1 :(得分:0)

_.extend应该可以正常工作。

Session.set( "orderFormContentsSessionVar", _.extend(Session.get("orderFormContentsSessionVar"), { numSeats: 10 }) )

我怀疑还有其他办法。