2013-11-24 30 views
0

我在Method中有兩個集合更新調用,它們似乎根本沒有運行。方法中的集合更新

Meteor.users.update({ _id: Meteor.user()._id }, { $push: { 'stars.teamStars': team.name } }); 
Teams.update({ _id: team._id }, { $inc: { stars: 1 } }); 

當我嘗試在控制檯中運行Teams更新時,它工作正常。 雖然,當我嘗試在控制檯上運行users更新時,我收到update failed: Access denied

我很困惑,因爲我在我的應用程序的其他部分有非常相似的更新調用,並且他們完美地運行。

編輯: 我的Meteor.methods應該位於/server

回答

0

檢查您的代碼Meteor.users.allow規則。您已使用(meteor remove insecure)刪除insecure程序包。這意味着你必須明確地給流星的例如允許規則:

Meteor.users.allow({ 
    update: function (userId, doc, fields, modifier) { 
     // can only change your own documents 
     return doc.owner === userId; 
    } 
}); 
+0

如果他的代碼在運行方法,添加允許規則不應該是必要的(但你解釋爲什麼在控制檯中更新的呼叫不工作)。對我來說,這聽起來像他的方法根本沒有運行(調用),並且延伸,也沒有更新調用它。 –

+0

@ PeppeL-G你可能是對的,可能有方法調用返回的'err',而是需要檢查的 – Akshat

+0

我在被調用的方法中有一個console.log。所以這個方法正在被調用。我很困惑。我有非常相似的db調用工作。唯一的區別是它們不在方法中。我將在方法之外運行這些方法,看看會發生什麼。我只能假設他們會工作,但我需要他們運行一個方法... – Nathan