Angular + PersistenceJS和多个异步关系

时间:2015-12-26 12:42:05

标签: javascript angularjs persistence

嗨,非常感谢你的帮助, 我面临一个小问题,我在网上找不到很多例子或帮助:在PersistenceJS中多次加载关系,以便在同一个Angular View上显示它们。

为了更清楚,我有这种对象和关系:

  • 商店1< - > *第1条< - > *图片

所以我定义了对象之间的关系:

我的商店对象

entities.Store = persistence.define('Store', { ... });
//Relations
entities.Store.hasMany('articles', entities.Article, 'store');

我的文章对象

entities.Article = persistence.define('Article', { ... });
//Relations
entities.Article.hasMany('images', entities.Image, 'article');

我的图片对象

entities.Image = persistence.define('Image', { ... });

My Angular View只是一个包含项目和图像的商店列表,使用ng-repeat:

<div ng-repeat="store in stores">
    <h1>{{store.name}}</h1>
    <div ng-repeat="article in store.articles">
        <h2>{{article.name}}</h2>
        <div ng-repeat="image in article.images">
            <img src="{{image.link}}" />
        </div>
    </div>
</div>

我的控制器方法调用服务来加载数据库中的所有内容:

dataService.getStoresData().then(function(stores) {
    $scope.stores = stores;
});

我的服务正在加载,这就是我被困的地方,我尝试了很多东西,这是我的最后一个版本:

getStoresData: function () {
    var deffered = $q.defer();
    var query = entities.Store.all();
    query.list(null, function (stores) {
        deffered.resolve(stores); //As soon as possible ?
        for (var i = 0; i < stores.length; i++) { 
            //For each store, load the articles
            var storeData = stores[i];
            storeData.articles.list(null, function (articles) {
                storeData.articlesData = articles;
                for (var j = 0; j < storeData.articlesData.length; j++) {
                    //For each article, load the images
                    var articleData = storeData.articlesData[j];
                    articleData.images.list(null, function (images) {
                        articleData.imagesData = images;
                    });
                }
            })
        }
    })
    return deffered.promise;
},

在我的第一个版本中,问题是我的关系不会显示,因为,首先,它们尚未加载,然后它们不是简单的数组,但它们是 QueryCollection 。 然后我改变了上面的服务,我改变了我的视图以反映更改(store.articlesData和article.imagesData),但它还没有工作。

我做了一个尽可能简单的codePen来重现问题:http://codepen.io/anon/pen/eJdrPo。希望它可以帮助使事情更清楚:)

有没有办法让这个工作或我需要改变我的数据库结构? 有没有办法更有效地加载所有对象及其关系?

非常感谢你的帮助,

度过愉快的一天,

Gerfaut

0 个答案:

没有答案