我正在使用Meteor.js建立朋友列表管理系统。
为此,我有一个用户列表,我可以点击它在我的朋友列表中邀请他们。
这是我的代码。我在e.target.id和e.target.name中分别获得了另一个用户_id和profile.name。
Template.talkers.events({
"click .addTalker": function(e, tmpl){
/* Checking if there already is a pending request */
var bool = false;
for(var i = 0; i < Meteor.user().profile.friends.length; i++){
if(Meteor.user().profile.friends[i].id == id){
bool = false;
}else{
bool = true;
break;
}
}
/* If there isn't */
if(!bool){
/* I add the other user in my friend list with a pending status */
Meteor.users.update({_id: Meteor.userId()}, {
$push: {'profile.friends': {
id: e.target.id,
status: 0
}
}
});
/* Then, I add the request on the other user profile */
Meteor.users.update({_id: e.target.id}, {
$set: {'profile.friends': {
id: Meteor.userId(),
status: 2
}
}
});
/* And I create a new notification for the other user */
var notifId = Meteor.users.findOne({_id: e.target.id}).profile.notifications.length;
console.log(notifId + 1);
Meteor.users.update({_id: e.target.id}, {
$push: {'profile.notifications': {
id: (notifId + 1),
type: 1,
img: null,
link: "/profile"},
}
});
alert("An invitation has been sent to " + e.target.name)
}
}
});
}
问题在于,如果我在朋友列表中正确添加了具有挂起状态的其他用户,我会在另一个用户的两次更新中抛出相同的错误两次。目前,我将_id和一些信息从所有用户的个人资料发布到客户端。我想问题来自于我可能不会从客户端重写另一个用户配置文件,但只能读取它。然后,我想我应该通过方法调用来做服务器端?
您能否确认我的问题,或向我解释如何继续?
谢谢你
答案 0 :(得分:1)
是的,此处可能存在对其他用户缺乏更新权限的问题。从那里,您有两种选择:
Meteor.users
的权限。然后,您应该能够在客户端中保留更新呼叫。