更新 Meteor 中现有的 Mongo 集合对象
updating existing Mongo collection object in Meteor
我看到了像 this 这样的其他答案,但我认为我的回答更具体一些。
我有 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_name
、last_name
条目。我也尝试了 $setOnInstert
但我得到了 update failed: Access denied. Operator $setOnInsert not allowed in a restricted collection.
但我认为默认情况下 profile
是用户可写的。
改用它(更多信息 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
}
});
我看到了像 this 这样的其他答案,但我认为我的回答更具体一些。
我有 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_name
、last_name
条目。我也尝试了 $setOnInstert
但我得到了 update failed: Access denied. Operator $setOnInsert not allowed in a restricted collection.
但我认为默认情况下 profile
是用户可写的。
改用它(更多信息 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
}
});