2015-06-02 3 views
1

Я думаю, что я мог что-то упустить. У меня есть все содержимое формы заказа продукта пользователя, хранящейся в переменной сеанса.Частично обновить переменную сеанса в метеор?

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

Session.set("orderFormContentsSessionVar", orderFormContents); 

Как обновить значение только один ключ в orderFormContentsSessionVar, например, просто numDoors?

Я не хочу переписывать все существующее содержимое сеанса var.

Я хотел бы быть в состоянии сделать что-то вроде:

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

что-то эквивалентное _.extend

UPDATE

Следуя примеру ниже ответа, я просто написал функция для него:

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

Используя как вы предложили:

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

Да, я понял. Благодарю. Я просто не был уверен, было ли какое-то дополнительное свойство, встроенное в объект Session Метеор, который позволял обновлять из коробки. – fuzzybabybunny

0

_.extend должно работать нормально.

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

Я сомневаюсь, есть ли другой способ.

Смежные вопросы