首页 文章

为什么我的文件在使用$ addToSet的meteor方法中更新什么都不做?

提问于
浏览
1

我想开发一个系统,用户可以在其中创建主题并加入由其他用户创建的主题 . 在我的例子中,他们是两个用户(“A”和“B”),用户“A”创建一个主题,用户“B”加入这个主题 .

当“A”创建主题(以“A”记录)时,我初始化如下:

topic.users = [{userId: this.userId, admin: 1}];
Topics.insert(topic);

然后,当我用Topics.find()检查mongo时,我有一些看起来不错的东西:

{ "_id" : "8FDCyKssnrGxqvAep", "users" : [ { "userId" :"vQIMLMo5CK9YqxpTZ", "admin" : 1 } ] }

当“B”(以“B”记录)加入我呼叫的主题时:

Topics.update(topicId ,{ $addToSet: { users: { userId: this.userId, admin: 0 }} });

更新返回“未定义”,我除了在更新后,在我的文档中有类似的东西:

{ "_id" : "8FDCyKssnrGxqvAep", , "users" : [ { "userId" :"vQIMLMo5CK9YqxpTZ", "admin" : 1 }, { "userId" :"AlsA4q
5PS5s5ts", "admin" : 0 } ] }

我也试着这样做:

Topics.update({_id:topicId, 'users.userId': {$ne: this.userId}}, {$push: {users: { userId: this.userId, admin: 0 }}});

但是当我检查Mongo时,我仍然有:

{ "_id" : "8FDCyKssnrGxqvAep", , "users" : [ { "userId":"vQIMLMo5CK9YqxpTZ", "admin" : 1 } ] }

更新不执行任何操作,它们不是错误消息

在此先感谢您的帮助

编辑12/12/2015:

当我尝试在客户端进行更新时,它的工作正常 .

function joinTopic(topicId)
{
var user = Meteor.user();
Topics.update(topicId ,{ $addToSet: { users: { userId : user._id, admin: 0 }} }); 
}

但是当我想使用调用函数时,我有一个问题 . 在客户端,我有:

function joinTopic(topicId)
{
 Meteor.call('joinTopic', { topicId: topicId });
}

在服务器端,我有:

joinTopic: function (topicId)
{
Topics.update(topicId ,{ $addToSet: { users: { userId : this.userId, admin: 0 }}});
}

1 回答

  • 1

    好的,我发现了我的愚蠢错误!我不得不这样做:Meteor.call('joinTopic',topicId);

    而不是:Meteor.call('joinTopic',{topicId:topicId});

相关问题