UNPKG

directus-extension-xlsx-to-json

Version:

directus-extension-xlsx-to-json is a directus-custom-endpoint library that allows you to convert xlsx to json simply and easily.

82 lines (52 loc) 2.95 kB
# directus-extension-xlsx-to-json directus-extension-xlsx-to-json is a directus-custom-endpoint library that allows you to convert xlsx to json simply and easily. ### Author: @SeaBassLab [profile](https://github.com/SeaBassLab) ## tl;dr - Install by executing `npm i directus-extension-xlsx-to-json` - or `yarn add directus-extension-xlsx-to-json`. ## Motivation Directus is a modern, open source data platform. With a headless API that manages custom SQL database architectures. It allows users to import/export collections in bulk via CSV files. But many of our clients still use Excel files for bulk uploads 🥹. I ran into the difficult task of having to transfer huge excel files (50k+ records at a time 😅) to the SQL database. And all that effort and dedication led me to create this practical and efficient solution. I hope you enjoy it 😉. ## Getting started 1. Install the package `npm i directus-extension-xlsx-to-json`. 2. Create a collection where to save the excel. 3. Create the collection where you are going to save the data of that excel. 4. Create a flow to obtain the id of the uploaded Excel file and be able to pass it to the collection that will save the data. ## Necessary Collections ### Create a collection to store the files `my-xlsx-collection` - Create a file type field ### Create a collection to store the data `my-bulk-upload-collection` - The fields in this collection have to match the excel columns ## Necessary Flow - ## Create the flow that you think is appropriate to trigger #### Keep in mind that you need the id of this file that you just uploaded to your assets - Then create a `Webhook / Request URL` - Method `GET` - URL `{{$accountability.origin}}/items/{{$trigger.body.collection}}/{{$trigger.body.keys[0]}}` #### After that flow succeed... - Create another one `Webhook / Request URL` - Method `POST` - URL`{{$accountability.origin}}/sheetToJson/{{$last.data.data.excel}}` - Request body :`{ "collection": "my-bulk-upload-collection" }` ## Limitations - The fields in `my-bulk-upload-collection` have to match the excel columns. Otherwise it does not load the data and results in a 404 error - The id field has to be `auto-incemented integer`. Because this package does not handle uuid generators to be more optimal and light ## Considerations - You can treat these bulk upload collections as staging collections and then pass the data into a collection that handles the relationships between them and the necessary business logic. Is up to you ## Author <table> <tr> <td> <img src="https://avatars.githubusercontent.com/u/70863556?s=400&v=4" width="100"> </td> <td> Sebastian Pulido <br /> <a href="mailto:sebastian.pulido@ibisdev.tech">sebastian.pulido@ibisdev.tech</a> <br /> Software Developer at IbisDev <br /> <a href="https://ibisdev.tech">https://ibisdev.tech</a> </td> </tr> </table>