मैंने अभी पुस्तक "कोचडब: एक निश्चित मार्गदर्शिका" पूरी की है और डिजाइन दस्तावेजों के साथ खेलना शुरू कर दिया है। हालांकि एक बात है, कि मैं समझ में नहीं आता। अब तक मैंने जो भी उदाहरण देखे हैं वे कुछ हद तक रैखिक हैं।मैं couchdb दृश्य में एक और दृश्य कैसे कॉल कर सकता हूं?
उदाहरण: (!):
{
"_id": "1",
"_rev": ".....",
"name": "first",
"something": "blue",
"child": "2"
}
{
"_id": "2",
"_rev": ".....",
"name": "second",
"something": "green",
"child": "3"
"parent" : "1"
}
{
"_id": "3",
"_rev": ".....",
"name": "second",
"something": "red",
"parent" : "2";
}
मैं एक दृश्य है, जो सभी रंग देता है लेखन कोई समस्या नहीं है
function(doc) {
if (doc.something) {
emit(doc.something,doc._id);
}
}
लेकिन क्या होगा अगर मैं सभी सन्तान जानना चाहता हूँ (नहीं बच्चे, क्षमा करें मेरी गलती) _id = 1 ("कुछ": "नीला") के साथ तत्व के लिए? मेरा प्रोग्रामिंग अनुभव मुझे बताता है कि मुझे रिकर्सन का उपयोग करना चाहिए, लेकिन मुझे नहीं पता कि कैसे। व्यू फ़ंक्शन से मैं एक और दृश्य फ़ंक्शन कैसे कॉल कर सकता हूं?
सामान्य रूप से: यह समस्या उत्पन्न होती है, जब आप जेसन दस्तावेज़ों के बीच संदर्भ के साथ डेटाबेस तैयार करते हैं। अधिक विशेष रूप से तत्वों के बीच एक संक्रमणीय संबंध के साथ।
संपादित करें: उदाहरण के लिए: मैं सिर्फ पता _ id = 1 और परिणाम की तरह कुछ किया जाना चाहिए [_ id = 2, _ id = 3], क्योंकि 2 1 और 3 का एक बच्चा है का एक बच्चा है
function (doc) {
if (doc.parent) {
emit(doc.parent, { "_id": doc._id });
}
}
("बच्चा" संपत्ति आप दस्तावेज़ में है: 2.
मुझे वर्णित तत्वों के बीच संबंधों को मॉडल करने की आवश्यकता है। हालांकि मेरे पास एक जावा वेब एप्लिकेशन में तर्क को स्थानांतरित करने के लिए लक्जरी है, जो कुछ हद तक कॉचडब एप्लिकेशन के लिए एक रैपर है। मेरा इरादा सोफेडब डिजाइन दस्तावेज़ के लिए जितना संभव हो उतना तर्क लेना था और कई कॉल से बचना था। मैं आपके द्वारा उल्लिखित दोनों दृष्टिकोणों का प्रयास करूंगा: ए) एकाधिक कॉल ("मूल दस्तावेज प्राप्त करें, अपने बच्चों को प्राप्त करें, अपने बच्चों को प्राप्त करें, आदि) और बी) पूर्ण पथ को बचाएं (जो कम वांछनीय है) और देखें कि कौन सा है तेजी/बेहतर। जवाब के लिए धन्यवाद। –
प्रश्न के लिए धन्यवाद। मैंने जवाब देने के दौरान नई चीजें सीखीं। यह शानदार होगा अगर आपने यहां अपने निष्कर्ष पोस्ट किए (या वेब पर कहीं भी) जब आप पाते हैं कि आपके लिए सबसे अच्छा क्या काम करता है। –