2015-01-15 117 views
0

我看到了其他答案,如this,但我認爲我的更具體。更新流星中的現有Mongo集合對象

我已經Meteor.user()Object {_id: "iymu2h9uysCiKFHvc", emails: Array[2], profile: Object, services: Object}

,我運行一個函數來設置配置文件名和姓在這裏:

thisId = Meteor.userId(); 

Meteor.users.update({ _id: thisId }, { $set: { 
    profile: { 
    first_name: $('#firstName').val(), 
    last_name: $('#lastName').val() 
    } 
} 
}); 

我也是,不過,想,在不同的事件,請將一個notifications對象添加到配置文件。 我想:

thisId = Meteor.userId(); 

    Meteor.users.update({ _id: thisId }, { $set: { 
    profile: { 
     notifications: { 
     rcptDwnldFile: Session.get('recpt-dwnld-file'), 
     rcptPaysInv: Session.get('recpt-pays-inv'), 
     invSentDue: Session.get('inv-sent-due'), 
     // the rest 
     } 
    } 
    } 
}); 

但覆蓋我的first_namelast_name條目。我也試過$setOnInstert,但我得到了一個update failed: Access denied. Operator $setOnInsert not allowed in a restricted collection.,但我認爲profile默認是用戶可寫的。

回答

0

用這個代替(更多信息link - 見設置域內嵌文件中):

thisId = Meteor.userId(); 

Meteor.users.update({ _id: thisId }, { $set: { 
    'profile.first_name': $('#firstName').val(), 
    'profile.last_name': $('#lastName').val() 
} 
}); 

thisId = Meteor.userId(); 

Meteor.users.update({ _id: thisId }, { $set: { 
     'profile.notifications.rcptDwnldFile': Session.get('recpt-dwnld-file'), 
     'profile.notifications.rcptPaysInv': Session.get('recpt-pays-inv'), 
     'profile.notifications.invSentDue': Session.get('inv-sent-due'), 
     // the rest   
    } 
});