如何将自定义用户数据添加到流星帐户

How to add custom user data to meteor accounts

我正在尝试构建一个系统,以便 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 只是一个模板,我可以将用户名放入其中。而且我知道我必须添加将当前用户添加到其他用户的朋友列表的部分,但我想先让它工作。

您的主要问题是您正在设置推送。相反,您需要使用 $push.

var userId = Meteor.user();
Meteor.users.update(userId, {$push:'profile.friendList':friendUserId});

其次,我认为在用户配置文件中存储朋友是一个相当糟糕的主意。考虑创建一个朋友 collection。