Bonjour à tous,

je developpe actuellement la partie hors ligne de notre application.
Pour cela, j'utilise le plugin (Backbone.js) suivant qui me permet de récupérer les données dans une base de données IndexedDB au lieu de faire des requêtes de type REST :
https://github.com/superfeedr/indexe...bonejs-adapter

J'ai environ une quarantaine de dépot (objectStore), et un model (Backbone.Model) pour chaque dépot.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var database = {
    id: 'my_database',
    description: '',
    migrations: [
        {
            version: '1.0',
            migrate: function(transaction, next) {
                transaction.db.createObjectStore('depot1', { keyPath: 'id' });
                transaction.db.createObjectStore('depot2', { keyPath: 'id' });
                etc...
            }
        }
    ]
}
 
var depot1Model = Backbone.Model.extend({
    database: database,
    storeName: "depot1"
});
 
var depot2Model = Backbone.Model.extend({
    database: database,
    storeName: "depot2"
});
 
ect....
Lorsque un utilisateur arrive sur notre application pour la premiere fois, je souhaite récupérer toutes ses informations sur le serveur pour les stocker localement (elle peut atteindre 40Mo environ) puis ensuite, à intervale régulier, ne récupérer que les dernières modifications qui ont été faite. Je reçois donc un objet JSON de la forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    "depot1": [
        {
            "id": 1,
            "name": "",
            etc...
        },
        {
            "id": 2,
            "name": "",
            etc...
        }
    ],
    "depot2": [
        {
            "id": 1,
            "name": "",
            etc...
        }
    ],
    etc....
}
Une fois récupérées, je souhaite donc mettre à jour mes dépots. Mais je ne sais pas comment m'y prendre avec Backbone.js. Actuellement, je fais ca, mais le navigateur plante totalement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
$.getJSON("synchronisation.php", function(records) {
    $.each(records, function(key) {
        try {
            var model = new window[key + "Model"]();
            if (model instanceof Backbone.Model)
                for(var i = 0, len = this.length; i < len; i++)
                    model.save(this[i]);
        }
        catch(err) {}
    });
});
Avez-vous une idée de la façon dont je dois procéder pour mettre à jour mes dépots en utilisant Backbone.js ?
Ou est ce que pour la synchronisation, je dois oublier Backbone.js et faire le traitement en utilisant directement l'API IndexedDB ?

Si vous avez besoin de plus d'informations, n'hésitez pas à me le demander.

Sébastien