我正在尝试构建一个系统,以便MeteorJS中内置的默认帐户系统将有一个朋友列表。不幸的是,这只是不起作用,我无法弄清楚为什么。我目前正在尝试简单地将friendList数组添加到user.profile,然后只需将添加的用户附加到该列表的末尾。 这是代码: 服务器:
Meteor.methods({
addFriend: function(friendUsername){
friendUserId = Meteor.users.findOne({username:friendUsername});
if(friendUserId){
Meteor.users.update({_id:Meteor.userId()}, {$set:{"profile.friendList":Meteor.user().profile['friendList'].push(friendUserId)}});
return 1;
}
else return 0;
}
});
客户端:
Template.addFriendPage.events({
"keypress .addFriendByUsername": function(event, template){
if(event.which == 13){
event.preventDefault();
var user = Meteor.userId();
var friendUsername = template.find(".addFriendByUsername").value;
console.log(friendUsername);
console.log(user);
console.log(Meteor.call("addFriend",friendUsername));
if(Meteor.call("addFriend", friendUsername)){
alert("successfully added friend!");
template.find(".addFriendByUsername").value = "";
} else alert("not a valid username");
}
}
});
html只是一个我可以输入用户名的模板。而且我知道我必须添加我将当前用户添加到其他用户的朋友列表的部分,但我希望首先使用它。
答案 0 :(得分:2)
您的主要问题是您正在设置推送。相反,您需要使用$push
。
var userId = Meteor.user();
Meteor.users.update(userId, {$push:'profile.friendList':friendUserId});
其次,我认为将朋友存储在用户个人资料中是个坏主意。考虑创建一个朋友集合。