Нужно ли принудительно уведомлять об изменениях, когда данные 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>