5

मुझे दो पॉलिमर फायरबेस-संग्रह तत्वों को लूप करने की समस्या है। मेरी डेटाबेस संरचना के साथ मुझे सबसे पहले यह जांचना होगा कि उपयोगकर्ता के पास कौन सी घटनाएं हैं, फिर ईवेंट से उस ईवेंट की जानकारी प्राप्त करें।डोम-दोहराने के अंदर आप पॉलिमर के फायरबेस-संग्रह तत्वों में से दो कैसे घोंसला करते हैं?

इस कोड के साथ समस्या यह है कि जब मैं दूसरा फायरबेस-संग्रह लूप करता हूं तो "घटनाओं" पर डेटा-बाध्यकारी दोहराने वाले सभी पर समान होगा और इसलिए यह प्रत्येक एच 4 पर समान नाम होगा।

तो डेटा = "{{}}" में एक अद्वितीय चर होने का एक तरीका है। या डेटा लिखने का एक बेहतर तरीका है?

<firebase-collection data="{{userData}}" location="{{_getCorrectUrl()}}"></firebase-collection> 
<template is="dom-repeat" items="{{userData}}" as="user"> 
    <firebase-collection data="{{events}}" location="{{_getCorrectEventsUrl(user.__firebaseKey__)}}" ></firebase-collection> 
    <template is="dom-repeat" items="{{events}}" as="event"> 
    <h4>{{event.value.name}}</h4> 
    </template> 
</template> 
+0

क्या आप ईवेंट को ईवेंट के साथ लोड नहीं कर सकते हैं, इसलिए आपको दूसरा 'फायरबेस-संग्रह' नहीं करना है और केवल '{{userData.events}} 'पर दोहराया जा सकता है? –

+0

इससे समस्या हल हो जाएगी लेकिन यह इसे धीमा कर देगा। मैं फायरबेस सिफारिशों का पालन कर रहा हूं https://www.firebase.com/docs/web/guide/structuring-data.html –

+0

क्या आपको इस समस्या को हल करने के लिए मिला है? –

उत्तर

2

मेरे पास एक समाधान है जिसे मैं इस मुद्दे को हल करने का सबसे अच्छा तरीका नहीं मानता, लेकिन यह मेरे लिए काम करता है। मैंने 'मेरा-उपयोगकर्ता' नामक एक और तत्व बनाया, मैंने उपयोगकर्ता नामक एक विशेषता का खुलासा किया जिसे उपयोगकर्ता के पहले डोम-दोहराने से मूल्य दिया गया है। सबकुछ काम करता है, हालांकि, मैं इस समाधान से संतुष्ट नहीं हूं। मैं अभी भी ऐसे समाधान की तलाश में हूं जिसमें इसके लिए एक समर्पित तत्व शामिल नहीं है।

<firebase-collection data="{{userData}}" location="{{_getCorrectUrl()}}"> 
</firebase-collection> 
<template is="dom-repeat" items="{{userData}}" as="user"> 
    <my-user user="[[user]]"></my-user> 
</template> 

और अन्य 'मेरा-उपयोगकर्ता:

<dom-module id="my-user"> 
<template> 
    <firebase-collection data="{{events}}" location="{{_getCorrectEventsUrl(user)}}" ></firebase-collection> 
    <template is="dom-repeat" items="{{events}}" as="event"> 
    <h4>{{event.value.name}}</h4> 
    </template> 
</template> 
<script> 
    (function() { 
    Polymer({ 
    is: 'my-user', 
    _getCorrectEventsUrl: function(obj) { 
     return 'https://app.firebaseio.com/users/' + obj.__firebaseKey__; 
    }, 
    properties: { 
     user:{ 
     type:Object, 
     }, 
    }, 

    }); 
})(); 
</script> 
</dom-module> 

संपादित

अब इस सवाल का जवाब देने के कुछ समय बाद मुझे पता चला है कि जब कोई NoSQL के साथ ऐसी स्थिति का सामना आया डेटाबेस, यह आमतौर पर डिजाइन में एक समस्या पर प्रकाश डाला गया है। डेटा को डी-सामान्यीकृत किया जाना चाहिए और किसी को SQL डेटाबेस में सामान्य रूप से किए जाने वाले कार्यों में शामिल होने से बचना चाहिए। यूट्यूब पर Firebase Database For SQL Developers देखें।

+0

क्या आपको इससे बेहतर समाधान मिला? या फिर भी एक और कस्टम तत्व होने के एक ही समाधान का उपयोग कर। – Srikanth

+0

@ श्रीकांत हां, इसे देखें: https://www.youtube.com/watch?v=ZDjiUmx51y8&index=3&list=PLNYkxOF6rcICdISJclfQhj2S8QZGjXV8J आपको मूल रूप से अपने एप्लिकेशन को फिर से डिजाइन करने की आवश्यकता है। –

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