2013-09-26 25 views
9

Kullanıcıların profillerini güncellemeleri için bir form oluşturdum. Formu gönderdiğimde [403] hatası alıyorum. Bu kodu yazıyorsunuz - hangi dosya/dizine -Meteor.users'ın güncellenmesi

Not permitted. Untrusted code may only update documents by ID.

Sorum nerede, Meteor.users.allow kullanmak için gidiyorum eğer, nedir?

sayesinde Nathan

+0

Kodunuzu yükleyebilir misiniz ?? Bizi daha iyi anlayacaktır. –

cevap

17

Aldığınız hata sizin izin/inkar kurallar sonucu değildir. Olduysa doğrudan 'Erişim Reddedildi' hatası alırdınız.

Kullanıcılarınızı güncelleştirirken (doğru allow kurallarının yerine sahip olmanın yanı sıra), kullanıcılarınızı _id numaralı telefona göre güncelleştirmeniz gerekir - özellikle istemci tarafında güncelleştiriliyorlarsa.

Yani yerine

Meteor.users.update({name: "etc"}, {$set:..}); 

tek bir _id almak ve daha sonra bir konuda belgenizi güncellemek için, ikiye bölmek gerekir.

var user = Meteor.users.findOne({name: 'etc'}); 

Meteor.users.update({_id: user._id}, {$set:..}); 

Kural olarak yalnızca güncellerken belgeyi bulmak için _id kullanabilirsiniz istemci üzerinde olduğunu.

+0

Teşekkürler @Akshat. Hatayı okudum, ama inatçıydım, etrafında bir yol olduğunu düşünüyorum. Bir soru daha, 'allow' kuralları' users' koleksiyonuna koymak için iyi bir yer olurdu? – Nathan

+0

Sunucuda çalıştıklarından emin olmalısınız, bu nedenle kök dizindeki bir js dosyasında veya '/ server' dizininde. – Akshat

+10

'Meteor.users.findOne()' a ihtiyacınız yoktur, buradan arayın. Meteor.users.update ({_id: Meteor.userId()}, {$ set: {'profile.online': true}}); 'Meteor.userId()' işlevini hemen çağırmak için yeterlidir. – Tom

İlgili konular