Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组对象添加到Meteor.js中的用户集合_Meteor - Fatal编程技术网

将数组对象添加到Meteor.js中的用户集合

将数组对象添加到Meteor.js中的用户集合,meteor,Meteor,我是Meteor.js的新手,我发现文档有点难以理解 我从一个非常简单的应用开始,用户只需点击一个按钮就可以将现有游戏添加到他们的个人资料中。这些游戏储存在另一个流星收藏中 在rails中,我只想创建一个has_和_-belies_-to_-many关系,但Meteor不是这样工作的。我认为最好的方法是在创建用户帐户时添加一个空数组——然后,当他们单击“添加游戏”按钮时,它会将游戏标题传递到用户数组中 我的/server/users.js文件中有: Accounts.onCreateUserfu

我是Meteor.js的新手,我发现文档有点难以理解

我从一个非常简单的应用开始,用户只需点击一个按钮就可以将现有游戏添加到他们的个人资料中。这些游戏储存在另一个流星收藏中

在rails中,我只想创建一个has_和_-belies_-to_-many关系,但Meteor不是这样工作的。我认为最好的方法是在创建用户帐户时添加一个空数组——然后,当他们单击“添加游戏”按钮时,它会将游戏标题传递到用户数组中

我的/server/users.js文件中有:

Accounts.onCreateUserfunctionoptions,用户{ user.games=[]; 返回用户; }; 流星法{ addGame:functiontitle{ Meteor.users.updateMeteor.userId,{$addToSet:{games:title}; } }; 我正在调用我的/client/views/games/games\u list.js文件中的addGame方法,如下所示:

Template.gamesList.events{ “单击。添加到胸部btn”:函数E{ var title=$e.target.attr'name'; e、 防止违约; 调用'addGame',title,functiontitle{console.logtitle}; } };
我是在正确的轨道上,还是有更好的方法来实现这一点?

您是在正确的轨道上,但请声明数组而不是对象:

Accounts.onCreateUser(function(options, user){
    user.games = [];
    return user;
});
直接推送值而不是对象,并使用$addToSet避免重复,以防多次推送相同的gameId:

Meteor.methods({
    addGame: function(gameId) {
        Meteor.users.update(Meteor.userId(), { $addToSet: { games: gameId }});
    }
});

您的思路是正确的,但请声明数组而不是对象:

Accounts.onCreateUser(function(options, user){
    user.games = [];
    return user;
});
直接推送值而不是对象,并使用$addToSet避免重复,以防多次推送相同的gameId:

Meteor.methods({
    addGame: function(gameId) {
        Meteor.users.update(Meteor.userId(), { $addToSet: { games: gameId }});
    }
});

我认为这应该是一种可以接受的方式。现在您可以尝试,客户端:Meteor.calladdGame,gameId,functionerr,result{console.logresult};你试过这个了吗?我想这应该是一个可以接受的方法。现在您可以尝试,客户端:Meteor.calladdGame,gameId,functionerr,result{console.logresult};你试过了吗?我想这已经让我很接近了-我已经用我更新的代码更新了OP,但它仍然不起作用。你能提供一些关于为什么它不起作用的更多信息吗?例如,错误消息,Log控制台只是说undefinedAlso,将您的回调更改为functionerror,title{console.logtitle},否则您将读取错误字段而不是结果字段,如果没有错误,结果字段将是未定义的。您不确定是否可以。执行以下操作:functionerror,user{console.loguser.games}-假设addGame方法将用户记录返回给客户端,我认为这已经非常接近了-我已经用更新的代码更新了OP,但它仍然不起作用。你能提供一点关于为什么它不起作用的更多信息吗?例如,错误消息,Log控制台只是说undefinedAlso,将您的回调更改为functionerror,title{console.logtitle},否则您将读取错误字段而不是结果字段,如果没有错误,结果字段将是未定义的。您不确定是否可以。执行以下操作:functionerror,user{console.loguser.games}-假设addGame方法将用户记录返回给客户端