2013-09-26 15 views
9

मैंने उपयोगकर्ताओं के लिए अपनी प्रोफ़ाइल अपडेट करने के लिए एक फॉर्म बनाया है। जब मैं फॉर्म जमा करता हूं तो मुझे एक [403] त्रुटि मिल रही है।Meteor.users को अपडेट करना

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

मेरे सवाल है, अगर मैं Meteor.users.allow उपयोग करने के लिए जा रहा हूँ, जहां - क्या फ़ाइल/निर्देशिका में - मैं इस कोड लिख सकता हूँ?

धन्यवाद, नाथन

+0

क्या आप अपना कोड पोस्ट कर सकते हैं ?? इससे हमें अधिक समझ आती है। –

उत्तर

17

त्रुटि आप हो रही है आपकी अनुमति देते हैं/इनकार नियमों का एक परिणाम नहीं है। यदि आप थे तो आपको सीधे 'पहुंच अस्वीकृत' त्रुटि मिलेगी।

अपने उपयोगकर्ताओं को अपडेट करते समय (साथ ही सही allow नियमों को सही करने के साथ) आपको अपने उपयोगकर्ता को अपने _id द्वारा अपडेट करना होगा - खासकर अगर उन्हें क्लाइंट एंड पर अपडेट किया जा रहा है।

तो बजाय

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

आप एक _id पाने के लिए और फिर एक है कि पर अपने दस्तावेज़ अद्यतन करने के लिए दो में यह विभाजित करने की आवश्यकता,।

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

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

नियम ग्राहक आप केवल _id उपयोग कर सकते हैं जब अद्यतन करने दस्तावेज़ को खोजने के लिए पर है।

+0

धन्यवाद @ अक्षत। मैंने त्रुटि पढ़ी, लेकिन मैं जिद्दी था, सोच रहा था कि इसके चारों ओर एक रास्ता था। एक और सवाल, 'उपयोगकर्ताओं' संग्रह के लिए मेरे 'अनुमति' नियमों को रखने के लिए एक अच्छी जगह कहां होगी? – Nathan

+0

आपको यह सुनिश्चित करने की ज़रूरत है कि वे सर्वर पर चलें, इसलिए जड़ फ़ाइल में रूट निर्देशिका या '/ server' निर्देशिका में। – Akshat

+10

आपको स्पष्ट 'Meteor.users.findOne();' यहां कॉल करने की आवश्यकता नहीं है। 'Meteor.users.update ({_id: Meteor.userId()}, {$ set: {'profile.online': true}}); 'पर्याप्त है क्योंकि आप तुरंत' Meteor.userId() 'का आह्वान कर सकते हैं। – Tom

संबंधित मुद्दे