6

तो, मैंने अभी एक उल्का प्रोजेक्ट शुरू कर दिया है और खाता-पासवर्ड पैकेज शामिल किया है। पैकेज केवल कुछ चाबियों का समर्थन करता है। मैं कुछ और फ़ील्ड के साथ उपयोगकर्ता संग्रह में एक नया SimpleSchema जोड़ना चाहता हूं।meteorjs में accounts-password पैकेज का उपयोग कर उपयोगकर्ता संग्रह में संग्रह 2 स्कीमा कैसे जोड़ें?

मैं

@users = Mongo.Collection('users'); 
//Error: A method named '/users/insert' is already defined 

मैं एक स्कीमा संलग्न कर सकते हैं लेकिन वैकल्पिक फ़ील्ड की बहुत रखने के लिए मजबूर किया जाएगा के साथ उपयोगकर्ताओं संग्रह का एक और उदाहरण बनाने के लिए नहीं दिया हूँ, और नहीं डिफ़ॉल्ट पैकेज के साथ रजिस्टर करने के लिए सक्षम हो सकता है अन्यथा।

क्या मैं अन्य फ़ील्ड को वैकल्पिक किए बिना सरलशेमा जोड़ सकता हूं और फिर भी ठीक से लॉगिन कर सकता हूं?

या इस मामले के लिए कोई और काम है?

अग्रिम में सहयोग के लिए धन्यवाद

उत्तर

-1

आप के साथ उपयोगकर्ताओं को संग्रह प्राप्त कर सकते हैं: https://atmospherejs.com/aldeed/collection2

Schema = {}; 
Schema.User = new SimpleSchema({ 
    username: { 
     type: String, 
     regEx: /^[a-z0-9A-Z_]{3,15}$/ 
    }, 
    emails: { 
     type: [Object], 
     // this must be optional if you also use other login services like facebook, 
     // but if you use only accounts-password, then it can be required 
     optional: true 
    }, 
    "emails.$.address": { 
     type: String, 
     regEx: SimpleSchema.RegEx.Email 
    }, 
    "emails.$.verified": { 
     type: Boolean 
    }, 
    createdAt: { 
     type: Date 
    }, 
    profile: { 
     type: Schema.UserProfile, 
     optional: true 
    }, 
    services: { 
     type: Object, 
     optional: true, 
     blackbox: true 
    }, 
    // Add `roles` to your schema if you use the meteor-roles package. 
    // Option 1: Object type 
    // If you specify that type as Object, you must also specify the 
    // `Roles.GLOBAL_GROUP` group whenever you add a user to a role. 
    // Example: 
    // Roles.addUsersToRoles(userId, ["admin"], Roles.GLOBAL_GROUP); 
    // You can't mix and match adding with and without a group since 
    // you will fail validation in some cases. 
    roles: { 
     type: Object, 
     optional: true, 
     blackbox: true 
    }, 
    // Option 2: [String] type 
    // If you are sure you will never need to use role groups, then 
    // you can specify [String] as the type 
    roles: { 
     type: [String], 
     optional: true 
    } 
}); 
:

@users = Meteor.users; 

आप collection2 पैकेज के डॉक्स में उपयोगकर्ता संग्रह को परिभाषित करने के लिए अच्छा उदाहरण मिल सकते हैं

-2

आपके पास ऐसे संग्रह में स्कीमा के अनुलग्नक के अनुकूलन के तीन तरीके हैं:

  • हर नया फ़ील्ड वैकल्पिक बनाएं।
  • डिफ़ॉल्ट मान हैं (friends उदाहरण के लिए [] पर डिफ़ॉल्ट)।
  • नए अनिवार्य तत्वों ("पी = एनपी" या "पी! = एनपी" के लिए एक रेडियो) शामिल करने के लिए यूआई अपडेट करें।

प्रत्येक विकल्प कुछ हद तक मान्य है। वर्तमान संदर्भ में सबसे अधिक तार्किक क्या लगता है और आपको कम से कम सिरदर्द क्या देगा।

क्या आपको रजिस्ट्रार करते समय someField के लिए उपयोगकर्ता द्वारा दिए गए मान की आवश्यकता है? फिर आपको यह मान लाने के लिए यूआई को अपडेट करना होगा।
someField की उपस्थिति महत्वपूर्ण है, और इसे किसी डिफ़ॉल्ट ऑब्जेक्ट (एक खाली सरणी, null, 0 ...) में प्रारंभ किया जा सकता है? फिर एक डिफ़ॉल्ट मान फिट होगा, और जब संग्रह 2 दस्तावेज़ को साफ़ करता है तो इसे जोड़ा जाएगा।
उपरोक्त में से कोई भी नहीं? वैकल्पिक। इस तरह के

someUser.friends.forEach(sendGifts); 

:


कुछ हद तक एक निजी नोट के रूप में, मैं कोड इस तरह पसंद करते हैं

if(someUser.hasOwnProperty('friends')) {//Or _.has(someUser, 'friends') but it sounds sad 
    someUser.friends.forEach(sendGifts); 
} 

दूसरा कोड friends एक वैकल्पिक फ़ील्ड है में, तो हम 'यह सुनिश्चित नहीं है कि यह मौजूद है या अपरिभाषित है। पर forEach पर कॉल करने से परिणामस्वरूप बड़ी बड़ी त्रुटि होती है, इसलिए हमें पहले क्षेत्र के अस्तित्व की जांच करनी होगी ...इस प्रकार, मैं स्थिरता और सादगी के लिए वैकल्पिक फ़ील्ड से थोड़ा बचने की सलाह दूंगा।

+0

प्रत्येक फ़ील्ड को वैकल्पिक बनाना एक अच्छा अभ्यास नहीं है :( –

+0

@Xakku वास्तव में, मैं अपने उत्तर के अंतिम भाग में यही संबोधित करता हूं। मैंने सोचा कि यह स्पष्ट था कि मैं हर जगह 'वैकल्पिक' के उपयोग को हतोत्साहित कर रहा था? - ओह रुको, शायद ऐसा इसलिए है क्योंकि सूची का आदेश दिया गया है? मुझे इसे बुलेट सूची में संपादित करने दें। –

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