Comment Pouvons-nous Récupérer Les Données De L'API En Utilisant Vuex

Récupérer des données à partir d'une API tierce avec vuex et axios va être le tutoriel d'aujourd'hui. Bonjour les développeurs, dans ce tutoriel, je vais vous montrer comment nous pouvons récupérer des données API en utilisant vuex. Vous savez que vuex est une excellente bibliothèque de gestion d'état pour l'application vue js.

Vuex est un  modèle de gestion d'état + une bibliothèque  pour les applications Vue.js. Il sert de magasin centralisé pour tous les composants d'une application, avec des règles garantissant que l'état ne peut être muté que de manière prévisible. 

Dans cet exemple, je vais simplement récupérer les utilisateurs d'une API tierce. Dans cet exemple vuex, mon souci est de vous apprendre comment utiliser et configurer vuex dans votre application vue js. Également dans cet exemple de gestion d'état vuex, j'utiliserai axios pour récupérer les données api.

En utilisant vuex, nous pouvons facilement gérer notre état. Parce que si vos composants doivent partager et mettre à jour l'état, vous en avez besoin. Alors, qu'est-ce qu'un modèle de gestion d'état ?

Commençons par une simple application de compteur Vue :

new Vue({
  // state
  data () {
    return {
      count: 0
    }
  },
  // view
  template: `
    < div >{{ count }}< /div >
  `,
  // actions
  methods: {
    increment () {
      this.count++
    }
  }
}) 

Il s'agit d'une application autonome avec les parties suivantes :

  • L'  état , la source de vérité qui anime notre application ;
  • La  vue , une cartographie déclarative de l'  état ;
  • Les  actions , les manières possibles dont l'état pourrait changer en réaction aux entrées de l'utilisateur à partir de la  vue .

Il s'agit d'une représentation simple du concept de "flux de données à sens unique":

vuex-flux-de-données-unidirectionnel

Cependant, cette simplicité s'effondre rapidement lorsque nous avons  plusieurs composants qui partagent un état commun :

  • Plusieurs vues peuvent dépendre du même élément d'état.
  • Les actions de différentes vues peuvent nécessiter la mutation du même élément d'état.

Pour le premier problème,  passer des accessoires peut être fastidieux pour les composants profondément imbriqués et ne fonctionne tout simplement pas pour les composants frères.

Pour le deuxième problème, nous nous retrouvons souvent à recourir à des solutions telles que rechercher des références directes d'instance parent/enfant ou essayer de muter et de synchroniser plusieurs copies de l'état via des événements. Ces deux modèles sont fragiles et conduisent rapidement à un code non maintenable.

Donc, pour résoudre tous ces problèmes ensemble, nous pouvons utiliser vuex. C'est une bibliothèque incroyable pour gérer votre état. Peu importe le nombre de composants ou de composants frères que vous allez utiliser et gérer votre état. il est toujours prêt à réduire votre travail acharné pour gérer votre état.

API principale de Vuex

vuex-backend-api

Alors commençons notre tutoriel vuex. Maintenant, créez un projet Vue en exécutant le code suivant dans votre terminal :

vue create vuex-app

Maintenant, nous devons installer vuex et axios. Alors ouvrez le terminal et exécutez les deux commandes l'une après l'autre

npm install vuex

//then

npm install axios

Dans votre  store dossier, créez un fichier et nommez-le index.js like below code

├── index.html
└── src
    ├── components
    ├── App.vue
    └──store
       └── index.js        # where we assemble modules and export the store

Ensuite, dans votre  store/index.js fichier, saisissez le code suivant :

vuex-app/src/store/index.js

import axios from 'axios'
import Vuex from 'vuex'
import Vue from 'vue'

//load Vuex
Vue.use(Vuex);

//to handle state
const state = {
    posts: []
}

//to handle state
const getters = {
    
}

//to handle actions
const actions = {
    getPosts({ commit }) {
        axios.get('https://jsonplaceholder.typicode.com/posts')
            .then(response => {
            commit('SET_POSTS', response.data)
        })
    }
}

//to handle mutations
const mutations = {
    SET_POSTS(state, posts) {
        state.posts = posts
    }
}

//export store module
export default new Vuex.Store({
    state,
    getters,
    actions,
    mutations
})

Maintenant, nous devons enregistrer notre magasin dans notre votre  main.js fichier :

import Vue from 'vue'
import App from './App.vue'
import store from './store'

Vue.config.productionTip = false

new Vue({
  store,
  render: h => h(App),
}).$mount('#app')

Maintenant, ouvrez votre fichier App.vue principal et collez ce code ci-dessous

vuex-app / src / App.vue


<template>
  <div id="app">
    <h1>{{ msg }}</h1>
    <div>
      <ul v-for='post in posts' :key='post.id'>
        <li>Post Title: {{post.title}}</li>
      </ul>
    </div>
  </div>
</template>

<script>

export default {
  name: 'App',
  data () {
    return {
      msg: 'We are learning vuex!!'
    }
  },
  computed: {
    posts() {
      return this.$store.state.posts
    }
  },
  mounted() {
    this.$store.dispatch("getPosts");
  }
}
</script> 

N'oubliez pas que les fonctions du gestionnaire de mutation doivent être synchrones et que vous pouvez valider des mutations dans les composants avec  this.$store.commit('xxx'), ou utiliser l'  mapMutations assistant, qui mappe les méthodes de composant à  store.commit.

Maintenant, si vous exécutez votre application, vous verrez la sortie suivante

vuejs-vuex-axios-api-appel-exemple

Vous pouvez également vérifier vos devtools vue, vous pourrez voir la sortie ci-dessous 

vuex-fecth-api-data-example-with-axiso

Regardez ci-dessus, nous récupérons des données sans utiliser de getters. Mais vous pouvez l'utiliser. Mais rappelez-vous, avec Vuex, les getters ne stockent pas réellement de valeur. Au lieu de cela, ils récupèrent et définissent indirectement l'état de Vuex.

N'oubliez pas que les getters Vuex reçoivent l'état comme premier argument et peuvent recevoir d'autres getters comme deuxième argument. MapGetters est une aide qui mappe les getters de magasin aux propriétés calculées locales.

Alors mettez à jour vos getters comme ça

//to handle state
const getters = {
    allPosts: (state) => {
        return state.posts
    }
}

Et mettez-le également à jour dans votre App.vue comme ça

 computed: {
    posts() {
      return this.$store.getters.allPosts;
    }
  },

Vous verrez la même sortie. J'espère que vous avez compris le point. Vous pouvez également utiliser mapGetters helper comme ça

import { mapGetters } from 'vuex'; 
export default {
  name: 'App',
  data () {
    return {
      msg: 'We are learning vuex!!'
    }
  },
  computed: mapGetters(['allPosts']),
  mounted() {
    this.$store.dispatch("getPosts");
  }
}

Et passez allPosts dans votre boucle for comme ça


 <ul v-for='post in allPosts' :key='post.id'>
        <li>Post Title: {{post.title}}</li>
 </ul> 

Vous verrez la même sortie. J'espère que ce tutoriel vue js vuex vous aidera à apprendre quelque chose de nouveau.

Source :  https://www.codecheef.org

#vue #vuejs #vuex #api 

What is GEEK

Buddha Community

Comment Pouvons-nous Récupérer Les Données De L'API En Utilisant Vuex

Comment Pouvons-nous Récupérer Les Données De L'API En Utilisant Vuex

Récupérer des données à partir d'une API tierce avec vuex et axios va être le tutoriel d'aujourd'hui. Bonjour les développeurs, dans ce tutoriel, je vais vous montrer comment nous pouvons récupérer des données API en utilisant vuex. Vous savez que vuex est une excellente bibliothèque de gestion d'état pour l'application vue js.

Vuex est un  modèle de gestion d'état + une bibliothèque  pour les applications Vue.js. Il sert de magasin centralisé pour tous les composants d'une application, avec des règles garantissant que l'état ne peut être muté que de manière prévisible. 

Dans cet exemple, je vais simplement récupérer les utilisateurs d'une API tierce. Dans cet exemple vuex, mon souci est de vous apprendre comment utiliser et configurer vuex dans votre application vue js. Également dans cet exemple de gestion d'état vuex, j'utiliserai axios pour récupérer les données api.

En utilisant vuex, nous pouvons facilement gérer notre état. Parce que si vos composants doivent partager et mettre à jour l'état, vous en avez besoin. Alors, qu'est-ce qu'un modèle de gestion d'état ?

Commençons par une simple application de compteur Vue :

new Vue({
  // state
  data () {
    return {
      count: 0
    }
  },
  // view
  template: `
    < div >{{ count }}< /div >
  `,
  // actions
  methods: {
    increment () {
      this.count++
    }
  }
}) 

Il s'agit d'une application autonome avec les parties suivantes :

  • L'  état , la source de vérité qui anime notre application ;
  • La  vue , une cartographie déclarative de l'  état ;
  • Les  actions , les manières possibles dont l'état pourrait changer en réaction aux entrées de l'utilisateur à partir de la  vue .

Il s'agit d'une représentation simple du concept de "flux de données à sens unique":

vuex-flux-de-données-unidirectionnel

Cependant, cette simplicité s'effondre rapidement lorsque nous avons  plusieurs composants qui partagent un état commun :

  • Plusieurs vues peuvent dépendre du même élément d'état.
  • Les actions de différentes vues peuvent nécessiter la mutation du même élément d'état.

Pour le premier problème,  passer des accessoires peut être fastidieux pour les composants profondément imbriqués et ne fonctionne tout simplement pas pour les composants frères.

Pour le deuxième problème, nous nous retrouvons souvent à recourir à des solutions telles que rechercher des références directes d'instance parent/enfant ou essayer de muter et de synchroniser plusieurs copies de l'état via des événements. Ces deux modèles sont fragiles et conduisent rapidement à un code non maintenable.

Donc, pour résoudre tous ces problèmes ensemble, nous pouvons utiliser vuex. C'est une bibliothèque incroyable pour gérer votre état. Peu importe le nombre de composants ou de composants frères que vous allez utiliser et gérer votre état. il est toujours prêt à réduire votre travail acharné pour gérer votre état.

API principale de Vuex

vuex-backend-api

Alors commençons notre tutoriel vuex. Maintenant, créez un projet Vue en exécutant le code suivant dans votre terminal :

vue create vuex-app

Maintenant, nous devons installer vuex et axios. Alors ouvrez le terminal et exécutez les deux commandes l'une après l'autre

npm install vuex

//then

npm install axios

Dans votre  store dossier, créez un fichier et nommez-le index.js like below code

├── index.html
└── src
    ├── components
    ├── App.vue
    └──store
       └── index.js        # where we assemble modules and export the store

Ensuite, dans votre  store/index.js fichier, saisissez le code suivant :

vuex-app/src/store/index.js

import axios from 'axios'
import Vuex from 'vuex'
import Vue from 'vue'

//load Vuex
Vue.use(Vuex);

//to handle state
const state = {
    posts: []
}

//to handle state
const getters = {
    
}

//to handle actions
const actions = {
    getPosts({ commit }) {
        axios.get('https://jsonplaceholder.typicode.com/posts')
            .then(response => {
            commit('SET_POSTS', response.data)
        })
    }
}

//to handle mutations
const mutations = {
    SET_POSTS(state, posts) {
        state.posts = posts
    }
}

//export store module
export default new Vuex.Store({
    state,
    getters,
    actions,
    mutations
})

Maintenant, nous devons enregistrer notre magasin dans notre votre  main.js fichier :

import Vue from 'vue'
import App from './App.vue'
import store from './store'

Vue.config.productionTip = false

new Vue({
  store,
  render: h => h(App),
}).$mount('#app')

Maintenant, ouvrez votre fichier App.vue principal et collez ce code ci-dessous

vuex-app / src / App.vue


<template>
  <div id="app">
    <h1>{{ msg }}</h1>
    <div>
      <ul v-for='post in posts' :key='post.id'>
        <li>Post Title: {{post.title}}</li>
      </ul>
    </div>
  </div>
</template>

<script>

export default {
  name: 'App',
  data () {
    return {
      msg: 'We are learning vuex!!'
    }
  },
  computed: {
    posts() {
      return this.$store.state.posts
    }
  },
  mounted() {
    this.$store.dispatch("getPosts");
  }
}
</script> 

N'oubliez pas que les fonctions du gestionnaire de mutation doivent être synchrones et que vous pouvez valider des mutations dans les composants avec  this.$store.commit('xxx'), ou utiliser l'  mapMutations assistant, qui mappe les méthodes de composant à  store.commit.

Maintenant, si vous exécutez votre application, vous verrez la sortie suivante

vuejs-vuex-axios-api-appel-exemple

Vous pouvez également vérifier vos devtools vue, vous pourrez voir la sortie ci-dessous 

vuex-fecth-api-data-example-with-axiso

Regardez ci-dessus, nous récupérons des données sans utiliser de getters. Mais vous pouvez l'utiliser. Mais rappelez-vous, avec Vuex, les getters ne stockent pas réellement de valeur. Au lieu de cela, ils récupèrent et définissent indirectement l'état de Vuex.

N'oubliez pas que les getters Vuex reçoivent l'état comme premier argument et peuvent recevoir d'autres getters comme deuxième argument. MapGetters est une aide qui mappe les getters de magasin aux propriétés calculées locales.

Alors mettez à jour vos getters comme ça

//to handle state
const getters = {
    allPosts: (state) => {
        return state.posts
    }
}

Et mettez-le également à jour dans votre App.vue comme ça

 computed: {
    posts() {
      return this.$store.getters.allPosts;
    }
  },

Vous verrez la même sortie. J'espère que vous avez compris le point. Vous pouvez également utiliser mapGetters helper comme ça

import { mapGetters } from 'vuex'; 
export default {
  name: 'App',
  data () {
    return {
      msg: 'We are learning vuex!!'
    }
  },
  computed: mapGetters(['allPosts']),
  mounted() {
    this.$store.dispatch("getPosts");
  }
}

Et passez allPosts dans votre boucle for comme ça


 <ul v-for='post in allPosts' :key='post.id'>
        <li>Post Title: {{post.title}}</li>
 </ul> 

Vous verrez la même sortie. J'espère que ce tutoriel vue js vuex vous aidera à apprendre quelque chose de nouveau.

Source :  https://www.codecheef.org

#vue #vuejs #vuex #api 

joe biden

1617257581

Software de restauración de Exchange para restaurar sin problemas PST en Exchange Server

¿Quiere restaurar los buzones de correo de PST a Exchange Server? Entonces, estás en la página correcta. Aquí, lo guiaremos sobre cómo puede restaurar fácilmente mensajes y otros elementos de PST a MS Exchange Server.

Muchas veces, los usuarios necesitan restaurar los elementos de datos de PST en Exchange Server, pero debido a la falta de disponibilidad de una solución confiable, los usuarios no pueden obtener la solución. Háganos saber primero sobre el archivo PST y MS Exchange Server.

Conozca PST y Exchange Server

PST es un formato de archivo utilizado por MS Outlook, un cliente de correo electrónico de Windows y muy popular entre los usuarios domésticos y comerciales.

Por otro lado, Exchange Server es un poderoso servidor de correo electrónico donde todos los datos se almacenan en un archivo EDB. Los usuarios generalmente guardan la copia de seguridad de los buzones de correo de Exchange en el archivo PST, pero muchas veces, los usuarios deben restaurar los datos del archivo PST en Exchange. Para resolver este problema, estamos aquí con una solución profesional que discutiremos en la siguiente sección de esta publicación.

Un método profesional para restaurar PST a Exchange Server

No le recomendamos que elija una solución al azar para restaurar los datos de PST en Exchange Server. Por lo tanto, al realizar varias investigaciones, estamos aquí con una solución inteligente y conveniente, es decir, Exchange Restore Software. Es demasiado fácil de manejar por todos los usuarios y restaurar cómodamente todos los datos del archivo PST a Exchange Server.

Funciones principales ofrecidas por Exchange Restore Software

El software es demasiado simple de usar y se puede instalar fácilmente en todas las versiones de Windows. Con unos pocos clics, la herramienta puede restaurar los elementos del buzón de Exchange.

No es necesario que MS Outlook restaure los datos PST en Exchange. Todos los correos electrónicos, contactos, notas, calendarios, etc. se restauran desde el archivo PST a Exchange Server.

Todas las versiones de Outlook son compatibles con la herramienta, como Outlook 2019, 2016, 2013, 2010, 2007, etc. La herramienta proporciona varios filtros mediante los cuales se pueden restaurar los datos deseados desde un archivo PST a Exchange Server. El programa se puede instalar en todas las versiones de Windows como Windows 10, 8.1, 8, 7, XP, Vista, etc.

Descargue la versión de demostración del software de restauración de Exchange y analice el funcionamiento del software restaurando los primeros 50 elementos por carpeta.

Líneas finales

No existe una solución manual para restaurar los buzones de correo de Exchange desde el archivo PST. Por lo tanto, hemos explicado una solución fácil e inteligente para restaurar datos de archivos PST en Exchange Server. Simplemente puede usar este software y restaurar todos los datos de PST a Exchange Server.

Más información:- https://www.datavare.com/software/exchange-restore.html

#intercambio de software de restauración #intercambio de restauración #buzón del servidor de intercambio #herramienta de restauración de intercambio

joe biden

1617255938

¿Cómo migrar los buzones de correo de Exchange a la nube de Office 365?

Si tiene problemas para migrar los buzones de correo de Exchange a Office 365, debe leer este artículo para saber cómo migrar los buzones de correo de Exchange EDB a Office 365. Al migrar a Office 365, los usuarios pueden acceder a sus buzones de correo desde cualquier lugar y desde cualquier dispositivo.

En esta publicación, explicaremos las razones detrás de esta migración y una solución profesional para migrar de Exchange a Office 365.

Razones para migrar Exchange Server a la nube de Office 365

Office 365 apareció por primera vez en 2011 y, dado que se considera la mejor plataforma para aquellas organizaciones que desean administrar todo su sistema de correo electrónico en la nube. Estas son las características clave de Office 365:

  1. Permite trabajar desde cualquier lugar y desde cualquier lugar.
  2. No se preocupe por el spam y el malware.
  3. La seguridad proporcionada por Office 365 es altamente confiable.
  4. Controla el costo total y brinda flexibilidad financiera.
  5. Todas las actualizaciones y mejoras son administradas por Microsoft.

¿Cómo migrar los buzones de correo de Exchange a Office 365?

Hay varias formas manuales de migrar los buzones de correo de Exchange EDB a Office 365, pero para evitar estos complicados y prolongados procedimientos, presentamos una solución de terceros, es decir, la herramienta de migración de Exchange, que es automatizada y directa para la migración de Exchange a Office 365. La herramienta funciona rápidamente y migra todos los elementos del buzón de Exchange Server a Office 365.

La herramienta de migración de Datavare Exchange es demasiado fácil de usar y ofrece pasos sencillos para migrar EDB a Office 365:

  1. Descargue e instale el software en su sistema.
  2. Agregue el archivo EDB de Exchange con el botón Examinar.
  3. Seleccione exportar a buzones de correo de Office 365.
  4. Proporcione los detalles de inicio de sesión de la cuenta de Office 365.
  5. Seleccione la carpeta y presione el botón Finalizar.

Por lo tanto, todos sus buzones de correo de Exchange EDB ahora se migran a Office 365.
Nota: puede usar filtros para migrar los elementos de datos deseados de la cuenta de Exchange a la de Office 365

Líneas finales

Este blog le indica una solución profesional para la migración de buzones de correo de Exchange a la cuenta de Office 365. Dado que las soluciones manuales son complicadas, sugerimos la herramienta de migración de Exchange, que es demasiado simple de usar. Los usuarios no se enfrentan a problemas al operar el programa. La mejor parte de este software es que no necesita habilidades técnicas para realizar la migración. Se puede comprender el funcionamiento del software descargando la versión de demostración que permite la migración de los primeros 50 elementos por carpeta.

Más información:- https://www.datavare.com/software/edb-migration.html

#herramienta de migración de intercambio #migración de intercambio #migrar buzones de correo de exchange

Herramienta de recuperación EDB para recuperar archivos EDB de Exchange corruptos

Todos los datos de Exchange Server, como correos electrónicos, contactos, notas, eventos, calendario, etc. se almacenan en el archivo Exchange EDB. A veces, el archivo EDB se vuelve inaccesible debido a la corrupción o daños en el archivo EDB. La corrupción del archivo EDB puede deberse a varias razones, como: B. grandes cantidades de datos, ataques de virus, problemas de red, etc. En este caso, los usuarios no pueden acceder a sus datos a través de archivos EDB dañados. Debido a esto, es necesario restaurar los elementos del buzón de un archivo EDB dañado. Pero, ¿cómo recuperar elementos de buzón dañados para archivos EDB? La respuesta a esa pregunta se encuentra en este blog. Así que sigamos con esta publicación para obtener una solución inmediata para la recuperación de elementos del buzón de Exchange.

¿Conoce el archivo EDB

El archivo Exchange EDB almacena datos en forma de archivos de base de datos:

Priv1.edb y Pub1.edb

La corrupción puede ocurrir en cualquier archivo EDB. Aquí le ofrecemos una solución para la recuperación de datos de estos dos archivos EDB.

Antes de eso, aclaremos las razones detrás de la corrupción en el archivo EDB, que discutiremos en la siguiente sección de este blog.

Razones detrás de la corrupción de archivos EDB

Estas son las principales razones detrás de la corrupción de archivos EDB.

• Un problema de sincronización con Exchange Server puede dañar el archivo EDB.
• El antivirus instalado en el servidor ha eliminado el archivo de registro.
• Almacenamiento excesivo en Exchange Server.
• Error al proporcionar datos del archivo EDB por Exchange Server.
• Los problemas de hardware o de red pueden dañar el archivo EDB.

Una solución inteligente para restaurar archivos EDB de Exchange

Hay varias formas manuales, como la utilidad Eseutil e Isinteg de Exchange Server, para restaurar la base de datos de Exchange Server. Sin embargo, estos métodos son complicados y es más probable que fallen. En esta situación, se recomienda utilizar otra solución inteligente y eficaz como la herramienta de terceros EDB Recovery. Esta es una de las soluciones más fáciles para restaurar todos los elementos como correo electrónico, contactos, notas, calendario, etc. desde el buzón de Exchange. El software soluciona rápidamente los problemas del archivo EDB y ayuda a los usuarios a obtener todos los elementos del buzón del archivo EDB dañado. Se necesitan unos minutos para reparar los elementos del archivo EDB y le permite exportar los datos recuperados a varios formatos de archivo como PST, EML, MSG, HTML, etc.

Siga los pasos para usar el software de recuperación de EDB para recuperar elementos de buzón de correo corruptos para archivos EDB.

  1. Descargue e inicie el Datavare software de recuperación EDB.
  2. Agregue el archivo EDB usando la opción Examinar.
  3. Seleccione la opción para guardar los datos después de la recuperación.
  4. Seleccione la ubicación del archivo de salida y haga clic en Siguiente.
  5. Guarde el informe de recuperación de archivos EDB y haga clic en Finalizar.
Líneas de cierre

Mit dieser Software, d. H. Der oben beschriebenen EDB-Wiederherstellung, können Benutzer alle beschädigten EDB-Dateien reibungslos reparieren und wiederherstellen. Benutzer haben keine Probleme beim Bedienen der Software. Benutzer können Exchange EDB-Dateien mithilfe der Software in PST und verschiedenen anderen Formaten wiederherstellen und speichern. Durch Herunterladen der Testversion können Benutzer die Funktionen und die Arbeitsgeschwindigkeit der Software überprüfen, indem sie die ersten 50 Elemente pro Ordner wiederherstellen. Wenden Sie sich bei Unklarheiten rund um die Uhr an unser technisches Personal.

Más información:- https://www.datavare.com/software/edb-recovery.html

#herramienta de recuperación de edb #recuperación de adobe #recuperar archivos edb de intercambio corruptos #recuperar archivos edb

Thierry  Perret

Thierry Perret

1659549600

Utiliser Les Champs De Données JSON Dans Les Bases De Données MySQL

Mon article « SQL vs NoSQL : les différences » a noté que la frontière entre les bases de données SQL et NoSQL est devenue de plus en plus floue, chaque camp adoptant les fonctionnalités de l'autre. Les bases de données MySQL 5.7+ InnoDB et PostgreSQL 9.2+ prennent directement en charge les types de documents JSON dans un seul champ. Dans cet article, nous examinerons plus en détail l'implémentation de MySQL 8.0 JSON.

Notez que toute base de données acceptera les documents JSON en tant que blob à chaîne unique. Cependant, MySQL et PostgreSQL prennent en charge les données JSON validées dans de vraies paires clé/valeur plutôt qu'une chaîne de base.

Juste parce que vous pouvez stocker du JSON…

… il ne s'ensuit pas que vous devriez.

La normalisation est une technique utilisée pour optimiser la structure de la base de données. La règle de la première forme normale (1NF) stipule que chaque colonne doit contenir une seule valeur, ce qui est clairement rompu par le stockage de documents JSON à valeurs multiples.

Si vous avez des exigences claires en matière de données relationnelles, utilisez des champs à valeur unique appropriés. JSON doit être utilisé avec parcimonie en dernier recours. Les champs de valeur JSON ne peuvent pas être indexés, évitez donc de l'utiliser sur des colonnes qui sont mises à jour ou recherchées régulièrement. De plus, moins d'applications clientes prennent en charge JSON et la technologie est plus récente, elle pourrait donc être moins stable que d'autres types.

Cela dit, il existe de bons cas d'utilisation JSON pour les données peu peuplées ou les attributs personnalisés.

Créer une table avec un champ JSON

Considérez un magasin vendant des livres. Tous les livres ont un identifiant, un ISBN, un titre, un éditeur, un nombre de pages et d'autres données relationnelles claires. Supposons que vous souhaitiez ajouter un nombre quelconque de balises de catégorie à chaque livre. Vous pouvez y parvenir en SQL en utilisant :

  1. une table de balises qui stocke chaque nom de balise avec un identifiant unique, et
  2. une table tagmap avec des enregistrements plusieurs-à-plusieurs mappant les ID de livre aux ID de balise

Cela fonctionnera, mais c'est un effort lourd et considérable pour une fonctionnalité mineure. Par conséquent, vous pouvez définir un champ JSON de balises dans la table des livres de votre base de données MySQL :

CREATE TABLE `book` (
  `id` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(200) NOT NULL,
  `tags` JSON DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB;

Notez que les colonnes JSON ne peuvent pas avoir de valeur par défaut, être utilisées comme clé primaire, être utilisées comme clé étrangère ou avoir un index. Vous pouvez créer des index secondaires sur des colonnes virtuelles générées , mais il est plus facile et plus pratique de conserver une valeur dans un champ séparé si des index sont nécessaires.

Ajout de données JSON

Des documents JSON entiers peuvent être transmis dans des instructions INSERT ou UPDATE . Par exemple, nos balises de livre peuvent être passées sous forme de tableau (à l'intérieur d'une chaîne) :

INSERT INTO `book` (`title`, `tags`)
VALUES (
  'ECMAScript 2015: A SitePoint Anthology',
  '["JavaScript", "ES2015", "JSON"]'
);

JSON peut également être créé avec ceux-ci :

Fonction JSON_ARRAY() , qui crée des tableaux. Par exemple:

Fonction JSON_OBJECT() , qui crée des objets. Par exemple:

Fonction JSON_QUOTE() , qui cite une chaîne en tant que valeur JSON. Par exemple:

ou vous pouvez (CAST anyValue AS JSON).

La fonction JSON_TYPE() vous permet de vérifier les types de valeur JSON. Il doit renvoyer OBJECT, ARRAY, un type scalaire (INTEGER, BOOLEAN, etc.), NULL ou une erreur. Par exemple:

-- returns ARRAY:
SELECT JSON_TYPE('[1, 2, "abc"]');

-- returns OBJECT:
SELECT JSON_TYPE('{"a": 1, "b": 2}');

-- returns an error:
SELECT JSON_TYPE('{"a": 1, "b": 2');

La fonction JSON_VALID() renvoie 1 si le JSON est valide ou 0 sinon :

-- returns 1:
SELECT JSON_TYPE('[1, 2, "abc"]');

-- returns 1:
SELECT JSON_TYPE('{"a": 1, "b": 2}');

-- returns 0:
SELECT JSON_TYPE('{"a": 1, "b": 2');

Tenter d'insérer un document JSON invalide générera une erreur et l'intégralité de l'enregistrement ne sera pas inséré/mis à jour.

Recherche de données JSON

La fonction JSON_CONTAINS() accepte le document JSON recherché et un autre à comparer. Il renvoie 1 lorsqu'une correspondance est trouvée. Par exemple:

-- all books with the 'JavaScript' tag:
SELECT * FROM `book` WHERE JSON_CONTAINS(tags, '["JavaScript"]');

La fonction similaire JSON_SEARCH() renvoie le chemin vers la correspondance donnée ou NULL lorsqu'il n'y a pas de correspondance. Il est passé au document JSON recherché, 'one'pour trouver la première correspondance ou 'all'pour trouver toutes les correspondances, et une chaîne de recherche (où %correspond à n'importe quel nombre de caractères et _correspond à un caractère de la même manière que LIKE). Par exemple:

-- all books with tags starting 'Java':
SELECT * FROM `book` WHERE JSON_SEARCH(tags, 'one', 'Java%') IS NOT NULL;

Chemins JSON

Un chemin JSON cible des valeurs et peut être utilisé pour extraire ou modifier des parties d'un document JSON. La fonction JSON_EXTRACT() le démontre en extrayant une ou plusieurs valeurs :

-- returns "SitePoint":
SELECT JSON_EXTRACT('{"id": 1, "website": "SitePoint"}', '$.website');

Toutes les définitions de chemin commencent par un $suivi d'autres sélecteurs :

  • un point suivi d'un nom, tel que$.website
  • [N]où N est la position dans un tableau indexé à zéro
  • le .[*]joker évalue tous les membres d'un objet
  • le [*]joker évalue tous les membres d'un tableau
  • le prefix**suffixcaractère générique évalue tous les chemins qui commencent par le préfixe nommé et se terminent par le suffixe nommé

Les exemples suivants font référence au document JSON suivant :

{
  "a": 1,
  "b": 2,
  "c": [3, 4],
  "d": {
    "e": 5,
    "f": 6
  }
}

Exemples de chemins :

  • $.aRetour1
  • $.cRetour[3, 4]
  • $.c[1]Retour4
  • $.d.eRetour5
  • $**.eRetour[5]

Extraction des chemins JSON dans les requêtes

Vous pouvez extraire le nom et la première balise de votre table de livres à l'aide de la requête :

SELECT
  title, tags->"$[0]" AS `tag1`
FROM `book`;

Pour un exemple plus complexe, supposons que vous ayez une table utilisateur avec des données de profil JSON. Par exemple:

identifiantNomprofil
1Craig{ « e-mail » : [« craig@email1.com », « craig@email2.com »], « twitter » : « @craigbuckler » }
2SitePoint{ "courriel": [], "twitter": "@sitepointdotcom" }

Vous pouvez extraire le nom Twitter à l'aide d'un chemin JSON. Par exemple:

SELECT
  name, profile->"$.twitter" AS `twitter`
FROM `user`;

Vous pouvez utiliser un chemin JSON dans la clause WHERE pour renvoyer uniquement les utilisateurs avec un compte Twitter :

SELECT
  name, profile->"$.twitter" AS `twitter`
FROM `user`
WHERE
  profile->"$.twitter" IS NOT NULL;

Modification d'une partie d'un document JSON

Il existe plusieurs fonctions MySQL pour modifier des parties d'un document JSON en utilisant la notation de chemin. Ceux-ci inclus:

  • JSON_SET(doc, path, val[, path, val]...): insère ou met à jour des données dans le document
  • JSON_INSERT(doc, path, val[, path, val]...): insère des données dans le document
  • JSON_REPLACE(doc, path, val[, path, val]...): remplace les données dans le document
  • JSON_MERGE(doc, doc[, doc]...): fusionne deux ou plusieurs documents
  • JSON_ARRAY_APPEND(doc, path, val[, path, val]...): ajoute des valeurs à la fin d'un tableau
  • JSON_ARRAY_INSERT(doc, path, val[, path, val]...): insère un tableau dans le document
  • JSON_REMOVE(doc, path[, path]...): supprime les données du document

Vous pouvez donc ajouter une balise « technique » à tout livre qui possède déjà une balise « JavaScript » :

UPDATE `book`
  SET tags = JSON_MERGE(tags, '["technical"]')
WHERE
  JSON_SEARCH(tags, 'one', 'JavaScript') IS NOT NULL;

Informations complémentaires

Le manuel MySQL fournit de plus amples informations sur le type de données JSON et les fonctions JSON associées .

Encore une fois, je vous exhorte à ne pas utiliser JSON à moins que ce ne soit absolument nécessaire. Vous pourriez émuler toute une base de données NoSQL orientée document dans MySQL, mais cela annulerait de nombreux avantages de SQL , et vous pourriez aussi bien passer à un vrai système NoSQL ! Cela dit, les types de données JSON peuvent économiser des efforts pour des exigences de données plus obscures dans une application SQL.

Source : https://www.sitepoint.com/use-json-data-fields-mysql-databases/

#mysql #database #json