如何更新 Meteor.user().profile 属性的内容?
How to update the content of Meteor.user().profile attributes?
我有一个按钮,如果按下它,应该会减少用户内部的一个属性,
我想在按下时减少 annualLeave
属性。
"profile" : {
"annualLeave" : 14,
"replancementLeave" : 0,
"medicalLeave" : 7
}
}
这是我获取 userID
的代码:
Session.set('getUserId', Al.findOne({_id: Session.get('appealId')}));
console.log(Session.get('getUserId').userID);
appealId
会话具有当前项目的 _Id
。在项目中,项目所属的用户 _Id
存储在 userID
.
中
在我得到 userID
之后,我用它来检索 annualLeave
。这是代码:
Session.set('userDetails', Meteor.users.findOne({_id: Session.get('getUserId').userID}));
console.log(Session.get('userDetails').profile.annualLeave);
到目前为止,两个console.log
都成功打印出值。
现在进入最后一步,我想将 annualLeave
减 1,然后更新数据库中的用户信息,
这是我的代码(不起作用):
Session.set('counter', Session.get('userDetails').profile.annualLeave - 1);
Meteor.users.findOne({_id : Session.get('getUserId').userID},{$set:{profile.annualLeave: Session.get('counter')}});
最后一部分我做错了什么?
如果密钥不在根级别,您需要将其放在引号中 并且您需要使用 .update()
方法而不是 .findOne()
Meteor.users.update(Session.get('getUserId').userID,
{ $set: { "profile.annualLeave": Session.get('counter') }});
您也可以通过递减值来跳过对 Session
的部分使用:
Meteor.users.update(Session.get('getUserId').userID,
{ $inc: { "profile.annualLeave": -1 }});
请注意,如果您仅通过 _id
进行搜索,则可以将值作为第一个参数而不是对象传递。
我有一个按钮,如果按下它,应该会减少用户内部的一个属性,
我想在按下时减少 annualLeave
属性。
"profile" : {
"annualLeave" : 14,
"replancementLeave" : 0,
"medicalLeave" : 7
}
}
这是我获取 userID
的代码:
Session.set('getUserId', Al.findOne({_id: Session.get('appealId')}));
console.log(Session.get('getUserId').userID);
appealId
会话具有当前项目的 _Id
。在项目中,项目所属的用户 _Id
存储在 userID
.
在我得到 userID
之后,我用它来检索 annualLeave
。这是代码:
Session.set('userDetails', Meteor.users.findOne({_id: Session.get('getUserId').userID}));
console.log(Session.get('userDetails').profile.annualLeave);
到目前为止,两个console.log
都成功打印出值。
现在进入最后一步,我想将 annualLeave
减 1,然后更新数据库中的用户信息,
这是我的代码(不起作用):
Session.set('counter', Session.get('userDetails').profile.annualLeave - 1);
Meteor.users.findOne({_id : Session.get('getUserId').userID},{$set:{profile.annualLeave: Session.get('counter')}});
最后一部分我做错了什么?
如果密钥不在根级别,您需要将其放在引号中 并且您需要使用 .update()
方法而不是 .findOne()
Meteor.users.update(Session.get('getUserId').userID,
{ $set: { "profile.annualLeave": Session.get('counter') }});
您也可以通过递减值来跳过对 Session
的部分使用:
Meteor.users.update(Session.get('getUserId').userID,
{ $inc: { "profile.annualLeave": -1 }});
请注意,如果您仅通过 _id
进行搜索,则可以将值作为第一个参数而不是对象传递。