---
title: Stockage de Données Mondial
slug: world-sdk-guide-fr/stockage-de-donnees-mondial
docTags: 
createdAt: 2024-09-02T08:34:13.134Z
---

Le DataStorage de ZEPETO est une base de données distante qui stocke et gère les données de jeu des utilisateurs sur une base par monde.

Il est adapté pour stocker les données de jeu des utilisateurs qui doivent être maintenues ou mises à jour lors de plusieurs sessions de jeu, car elles sont stockées et gérées par l'UserID.

Gérez les données de jeu de vos utilisateurs en utilisant l'[API](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/) disponible sur le serveur ZEPETO Multiplay.

Vous pouvez visualiser et modifier les données de jeu spécifiques aux utilisateurs stockées dans le Data Storage depuis le menu de gestion des données du monde dans ZEPETO Studio.

:::hint{type="info"}
**📘&#x20;**&#x56;euillez vous référer au guide suivant.  \[[Gestion des Données Mondiales](docId\:GmF-c5811E5Qg0xazdPc2)]
:::



## API de stockage de données

:::hint{type="info"}
**📘&#x20;**&#x56;euillez vous référer à la référence API suivante. [API ZEPETO.Multiplay.DataStorage](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage)
:::

:::hint{type="danger"}
- Veuillez remplir le code du serveur index.ts Sandbox.
- Sur le serveur local dans l'environnement de l'éditeur Unity, les données ne sont pas préservées lorsque le serveur est arrêté et redémarré.
- Après le déploiement du monde, les données sont stockées dans la base de données ZEPETO et maintenues.
- Les données ne seront pas enregistrées si les règles ci-dessous ne sont pas satisfaites :
  - Aucune valeur n'est fournie
  - Une valeur qui ne peut pas être stockée est saisie
- Contraintes de stockage des données
  - Limite de longueur de clé : 50 caractères
    - Seules les lettres, les chiffres et le soulignement (\_) sont autorisés dans la clé
  - Nombre maximum de clés : 1000 par ID utilisateur
  - Taille maximale des données de valeur : 500 000 caractères
    - Notez que les données de valeur sont sérialisées avec un identifiant interne lorsqu'elles sont stockées sur le serveur réel. Utilisez avec une marge de sécurité.
:::



## Lire / Écrire / Supprimer des données pour une seule clé

Vous pouvez lire, écrire et supprimer des données pour une seule clé dans le DataStorage du joueur local en utilisant [`DataStorage.get`](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/#get), [`DataStorage.set`](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/#set) et [`DataStorage.remove`](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/#remove).

```typescript
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';

export default class extends Sandbox {

    //...

    async onJoin(client: SandboxPlayer) {
        // Charger le stockage de données du joueur local
        const playerStorage: DataStorage = client.loadDataStorage();

        // Obtenir la valeur associée à la clé 'level' 
	      let playerLevel = await playerStorage.get("level") as number;
        if (playerLevel == null) {
            playerLevel += 1; 
        }

        // Stocker la valeur incrémentée
        await playerStorage.set("level", playerLevel);

        // Supprimer les données
        await playerStorage.remove("level");
    }
}
```



## Lire / Écrire des données pour plusieurs clés

Vous pouvez lire, écrire et supprimer des données pour plusieurs clés dans le stockage de données du joueur local en utilisant [`DataStorage.mget`](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/#mget) et [`DataStorage.mset`](https://developer.zepeto.me/docs/multiplay-server/interfaces/ZEPETO_Multiplay_DataStorage.DataStorage/#mset).

```typescript
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';

export default class extends Sandbox {

    //...

    async onJoin(client: SandboxPlayer) {
        const storage = client.loadDataStorage();
        // mset (multi key-value) store
        const success = await storage.mset<number>([
            { key: 'key1', value: 1 },
            { key: 'key2', value: 2 }
        ]);
        // Si réussi
        if (success) {
            // Obtenez les valeurs de key1 et key2 en une seule fois
            const keys = ['key1', 'key2'];
            const keyValeus = await storage.mget(keys);
            keys.forEach(key => {
                const value = keyValeus[key];
                console.log(value);
            });
        }
    }
}
```



## Gestion des erreurs

Vous pouvez mettre en œuvre une gestion appropriée des exceptions qui se produisent lors de l'appel de l'API DataStorage en vous référant aux types d'erreurs définis dans [`DataStorageError`](https://developer.zepeto.me/docs/multiplay-server/enums/ZEPETO_Multiplay_DataStorage.DataStorageError).

```typescript
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';

export default class extends Sandbox {

    //...

    async onJoin(client: SandboxPlayer) {
        // Charger le stockage de données du joueur local
        const playerStorage: DataStorage = client.loadDataStorage();

        try {
            let playerLevel = await playerStorage.get("level") as number;
        } catch (error) {
            let systemError = (error as SystemError);

            if (systemError.code === DataStorageError.Unknown || systemError.code === DataStorageError.NetworkError) {
                // Erreur système ou erreur réseau
                console.log(systemError.message);

            } else if (systemError.code === DataStorageError.KeyConstraintViolated) {
                // Contrainte de clé violée
                console.log(systemError.message);
                
            } else if (systemError.code === DataStorageError.ValueConstraintViolated) {
                // Contrainte de valeur violée
                console.log(systemError.message);
            }
        }
    }
}
```



## Accéder au stockage de données par ID utilisateur

Il est également possible d'accéder au stockage de données d'un utilisateur spécifique par UserID en utilisant [`DataStorage.loadDataStorage`](https://developer.zepeto.me/docs/multiplay-server/namespaces/ZEPETO_Multiplay_DataStorage?_highlight=loaddatastorage#loaddatastorage), au lieu du stockage de données du joueur local.

```typescript
    const userStorage: DataStorage = await loadDataStorage(userId);
```



:::hint{type="success"}
**👍 Conseil**

- Si vous souhaitez stocker des données entre différents mondes, implémentez-le en utilisant [httpService](docId:39nrkJTVCwNFLKaBDdDYZ)&#x20;
:::

