Нужно ли принудительно уведомлять об изменениях, когда данные Firebase-запроса не предоставляются напрямую (на более глубоком уровне JSON)?

У меня есть некоторые данные в трехуровневой структуре в Firebase. Я могу легко получить данные и извлечь то, что я хочу, используя элемент firebase-query Polymerfire. Но если я изменю данные на третьем уровне, ничего не произойдет, когда я ожидаю, что мой железный список будет отражать это, поскольку я использую функцию привязки данных в Polymer.

У меня есть другие экземпляры, которые работают нормально, где мой путь запроса - это непосредственный уровень, на котором я меняю данные, и все работает нормально.

Я наткнулся на эту тему, похоже, что у firebase-query есть эта проблема. Мне интересно, если это будет решено, если нет, был бы признателен, показав мне простой способ только получить изменения, в настоящее время я иду по пути, который показан в ссылке, и это довольно грязно. Благодарю.

"Я удалил то, что не связано, чтобы облегчить чтение"

Вот моя структура данных:

{
  "ky42sqEauWW0MMqEJaidCAI7Fcl1" : {
    "499248079923499248138779" : {

      "data" : "someValue",        //this is what I need to be notified about when it changes
    },
    "499248079923499248138755" : {
      "data" : "someOtherValue",
    }
  }
}

и вот где я привязываю свои данные к железному списку:

<!all the imports and headers ... >
  <head>

  </head>
  <body>

  <dom-module id="test-page">
    <template>
      <style>
     </style>

     <firebase-query
            id="myQuerry"
            app-name="test"
            path="/myPath/here"
            log=true      
            data="{{myData}}">
          </firebase-query>

     <app-header-layout has-scrolling-region style="top: 10px; width: 100%; min-height: 400px;">  
        <iron-list id="ironList" items="[[myData]]" as="myItem">
          <template>            

          <some stuff goes here that need to change when data is updated after change>

          </template>
        </iron-list>
      </app-header-layout>


  <script>

    HTMLImports.whenReady(function() {
      Polymer({
        is: 'test-page',
        properties: {
          items: {
            type: Array
          },
          user: String,

          uid: String,     

          myData: {
            type: Array,
            notify: true,
            observer: '_itemsChanged',
          },
        },  

        //got this from the link above
        observers: [
             '_itemsChange(schedData.*)'
        ],

        _itemsChange: function(schedData) {
          console.log('my items changed: ', schedData);
        },

        //the polymerfire gives something like this as an example but 
       //I can't get it to actually work without getting my hands dirty trying to extract only the changed data

        _itemsChanged: function(newData, oldData) { 
          console.log("old new data" , newData , oldData); 
        },


      });
    });

  </script>
</dom-module>

<setting-page></setting-page>

</body>
</html>

0 ответов

Другие вопросы по тегам