带Polymerfire的app indexeddb镜像

带Polymerfire的app indexeddb镜像,polymer,firebase-realtime-database,offline-caching,firebase-polymer,polymerfire,Polymer,Firebase Realtime Database,Offline Caching,Firebase Polymer,Polymerfire,我构建了一个包含多个选项卡的简单页面。每个选项卡从Firebase加载文章提要(集合/列表),并在页面上呈现卡片。在我尝试使用app indexeddb mirror将访问的提要持久化到indexeddb之前,一切都按照我的要求进行 以下是我所做的: <dom-module id="my-view1"> <template> <style include="shared-styles"> </style> <pape

我构建了一个包含多个选项卡的简单页面。每个选项卡从Firebase加载文章提要(集合/列表),并在页面上呈现卡片。在我尝试使用
app indexeddb mirror
将访问的提要持久化到
indexeddb
之前,一切都按照我的要求进行

以下是我所做的:

<dom-module id="my-view1">
<template>
    <style include="shared-styles">
    </style>

    <paper-tabs id="tabs"
                attr-for-selected="value"
                selected="{{selectedFeed}}"
                scrollable>
        <template is="dom-repeat"
                  items="[[feeds]]"
                  as="feed">
            <paper-tab value="[[feed.key]]">[[feed.name]]</paper-tab>
        </template>
    </paper-tabs>

    <firebase-query id="[[selectedFeed]]_feed"
                    app-name="myfirebaseapp"
                    path="/myfirebaseappdb/feed/[[selectedFeed]]"
                    data="{{articles}}">
    </firebase-query>

    <app-indexeddb-mirror
            key="[[selectedFeed]]"
            data="[[articles]]"
            persisted-data="{{persistedArticles}}">
    </app-indexeddb-mirror>

    <template is="dom-repeat"
              items="[[persistedArticles]]"
              as="article">
            <paper-card image="[[article.image]]" alt="image">
                <div class="card-content">
                    <h1 class="card-text">[[article.title]]</h1>
                    <h4 class="card-text">[[article.abstract]]</h4>
                </div>
            </paper-card>
    </template>

</template>

<script>
    Polymer({
        is: 'my-view1',
        ready: function () {
            this.feeds = [
                {name: "Feed1", key: "feed1"},
                {name: "Feed2", key: "feed2"},
                {name: "Feed3", key: "feed3"},
                {name: "Feed4", key: "feed4"}
            ];
        }
    });
</script>

[[feed.name]]
[[文章标题]]
[[文章摘要]]
聚合物({
是:‘我的视图1’,
就绪:函数(){
此参数为0.feed=[
{名称:“Feed1”,键:“Feed1”},
{名称:“Feed2”,键:“Feed2”},
{名称:“Feed3”,键:“Feed3”},
{名称:“Feed4”,键:“Feed4”}
];
}
});

我想做的是将每个提要缓存到
indexeddb
中作为一个条目(提要名称作为键,数据作为值),以便在应用程序脱机时加载它们。这就是appindexeddbmirror的基本功能,对吧

但是,我无法了解
firebase query
app indexeddb-mirror
之间的数据流,切换选项卡时,我会不断覆盖/清空
indexeddb
条目


有什么事情我做得不对吗?谢谢。

我通过交换firebase查询和app indexeddb镜像解决了这个问题。
我从来都不知道序列在Polymer中的重要性,而且这种顺序也很违反直觉。

当来自
firebase查询的数据发生变化时,
app indexeddb镜像将缓存数据。这意味着当您切换选项卡时,数据将发生变化,因为
firebase查询上的
路径
发生变化,这将反过来导致
app indexeddb mirror
元素重新缓存数据。我吸引了几个观察者打印日志,它确实看起来像您所说的@BenThomas。我仍然不知道如何正确地做这件事?你能解释一下吗?谢谢。一旦selectedFeed更改,它不会立即更改app indexeddb mirror的键吗(数据绑定是同步的)?在这种情况下,不应该清除/清空具有上一个密钥的缓存,对吗?是的,我希望它能够像您所说的那样针对不同的密钥进行存储。也许这是虫子?帮不了我你什么意思?像indexedDB应该在firebase查询之上吗?我在chrom开发工具中查看数据时遇到问题。你看到你的数据了吗?好像什么都没有