2015-04-16 9 views
7

मेरे पास परियोजनाएं और उपयोगकर्ता हैं।Sequelize का उपयोग कैसे करें कई संगठनों से संबंधित है?

उपयोगकर्ता के पास कई परियोजनाएं हो सकती हैं।

एक परियोजना में एकाधिक उपयोगकर्ता हो सकते हैं।

मैंने इसे एक संबंधित ToMany एसोसिएशन के साथ मॉडल करने की कोशिश की।

user.belongsToMany(project, { 
    through: 'writer_of_project' 
    foreign-key: 'user' 
    as: \projects 
}); 

project.bbelongsToMany(user, { 
    through: 'writer_of_project' 
    foreign-key: 'project' 
    as: 'writers' 
}); 

मेरे मुवक्किल पर यह इस तरह दिखता है:

user: { 
    id:  1, 
    ... 
    projects: [1,2,3] 
} 

project: { 
    id:  1, 
    ... 
    writers: [1,4,5] 
} 

सर्वर पर संघ संघ स्टोर करने के लिए एक तिहाई तालिका की आवश्यकता है और

अपने सर्वर पर मुझे लगता है कि जैसे संगठनों परिभाषित Sequelize मुझे इससे संबंधित मॉडल शामिल करने के लिए प्रतीत नहीं होता है।

अगर मैं include:[user] के साथ एक project.find(1) चलाने मैं

उपयोगकर्ता परियोजना से संबद्ध नहीं है!

यदि मैं परियोजना को ऊपर दिए गए उदाहरण से अद्यतन विधि में डालने का प्रयास करता हूं। उन विशेषता बस नजरअंदाज कर दिया है (मैं (projectUpdate.users पृष्ठभूमि में हो करने के लिए) एक project.setUsers की उम्मीद।

लोड हो रहा है और इन संगठनों को अद्यतन करने के साथ सौदा करने के लिए सही तरीका क्या है?

+1

मुझे लगता है कि यदि आप अपने मॉडल [sequelize-cli] (https://www.npmjs.com/package/sequelize-cli) के साथ सेट करते हैं तो एसोसिएशन पढ़ने के लिए आसान हो जाता है क्योंकि उन्हें मॉडल के भीतर ही शामिल किया जाता है । यह आपको माइग्रेशन का उपयोग करने की अनुमति देता है जो कि यह वास्तविक बोनस – swifty

उत्तर

13

project.belongsToMany(user, { 
    through: 'writer_of_project' 
    foreign-key: 'project' 
    as: 'writers' 
}); 

project.find({ 
    where: { id: 1 }, 
    include: [ { model: User, as: 'writers' } ] 
}); 

या आप संघ को बचा सकता है:

जब आप संघ को एक उपनाम ( as) प्रदान करते हैं प्रदान करने के लिए है कि को भी शामिल की जरूरत है
+0

ऐसा करने में डेटाबेस में संबंधित तालिका के साथ एक लेखक_of_project मॉडल बना देगा? इस पर वापस पिग करने के लिए खेद है, लेकिन मुझे चिंतित है कि मेरा माइग्रेशन डीबी के भीतर एक word_of_project तालिका नहीं बना था। कृपया सलाह दें.... –

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