Import/Export data from and to your database in just few clicks.

Overview

Strapi Plugin Import Export Entries

Import/Export data from and to your database in just few clicks.

UI

Features

Import

  • Import data directly from the Content Manager
  • Import data from CSV and JSON file or from typing raw text according to user permissions
  • Import contents to collection type (NOT single type yet)

Export

  • Export data directly from the Content Manager
  • Export CSV and JSON contents according to user permissions
  • Download files or copy exported data to clipboard
  • Filter & sort data using Content Manager filters & sorting

Screenshots

UI

UI

UI

Table Of Content

Requirements

Strapi v4 is required.

Installation

  1. Download
yarn add strapi-plugin-import-export-entries

or

npm i strapi-plugin-import-export-entries
  1. Enable the plugin

Add in the file config/plugins.js:

module.exports = ({ env }) => ({
  //...
  "import-export-entries": {
    enabled: true,
  },
  //...
});
  1. Update the config of the security middleware:

The security middleware needs to be configured to enable the use of the great Monaco code editor.

In the file config/middlewares.js, replace:

module.exports = [
  //...
  "strapi::security",
  //...
];

with

module.exports = ({ env }) => ({
  //...
  {
    name: "strapi::security",
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          // Enable the download of the Monaco editor
          // from cdn.jsdelivr.net.
          "script-src": ["'self'", "cdn.jsdelivr.net", "blob:"],
          upgradeInsecureRequests: null,
        },
      },
    },
  },
  //...
});

Rebuild The Admin Panel

New releases can introduce changes to the administration panel that require a rebuild. Rebuild the admin panel with one of the following commands:

yarn build --clean

or

npm run build --clean

Usage

Once the plugin is installed and setup, the functionnalities are accessible on the content management page of a collection.

UI

Import Example

Let's consider some data that represents yoga courses. We have a course table where each course refers to a beautiful_place (stored in the beautiful_place table).

Here we are importing the following 3 entries to the course table.

CSV data
"id","type","beautiful_place","description","name","createdAt","updatedAt","createdBy","updatedBy"
"1","vinyasa","{""id"":2,""name"":""Machu Picchu"",""description"":""The strength of the Incas with the chill of the alpacas."",""createdAt"":""2022-06-06T21:51:45.787Z"",""updatedAt"":""2022-06-06T21:51:45.787Z"",""locale"":""en""}","All you need is your mat and an Alpaca.","Alpaca Flow","2022-06-06T21:52:34.046Z","2022-06-06T21:52:34.046Z","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}"
"2","ashtanga","{""id"":1,""name"":""Boracay White Beach"",""description"":""Sea, Stretch and Sun!"",""createdAt"":""2022-06-06T21:49:35.227Z"",""updatedAt"":""2022-06-06T21:53:56.648Z"",""locale"":""en""}","Head in the stars, feet in the sand.","Sun Salutation","2022-06-06T21:55:35.088Z","2022-06-06T21:55:35.088Z","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}"
"3","vinyasa","{""id"":2,""name"":""Machu Picchu"",""description"":""The strength of the Incas with the chill of the alpacas."",""createdAt"":""2022-06-06T21:51:45.787Z"",""updatedAt"":""2022-06-06T21:51:45.787Z"",""locale"":""en""}","This place needs some serious renovation. Let's do it.","Inca Strength Journey","2022-06-06T21:58:39.571Z","2022-06-06T21:58:39.571Z","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}","{""id"":1,""firstname"":""Patrick"",""lastname"":""Beach"",""username"":null,""email"":""[email protected]"",""password"":""$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu"",""resetPasswordToken"":null,""registrationToken"":null,""isActive"":true,""blocked"":false,""preferedLanguage"":null,""createdAt"":""2022-05-23T19:16:33.057Z"",""updatedAt"":""2022-06-06T21:43:12.901Z""}"

Or the JSON equivalent:

JSON data
[
  {
    "id": 1,
    "type": "vinyasa",
    "description": "All you need is your mat and an Alpaca.",
    "name": "Alpaca Flow",
    "createdAt": "2022-06-06T21:52:34.046Z",
    "updatedAt": "2022-06-06T21:52:34.046Z",
    "beautiful_place": {
      "id": 2,
      "name": "Machu Picchu",
      "description": "The strength of the Incas with the chill of the alpacas.",
      "createdAt": "2022-06-06T21:51:45.787Z",
      "updatedAt": "2022-06-06T21:51:45.787Z",
      "locale": "en"
    },
    "createdBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    },
    "updatedBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    }
  },
  {
    "id": 2,
    "type": "ashtanga",
    "description": "Head in the stars, feet in the sand.",
    "name": "Sun Salutation",
    "createdAt": "2022-06-06T21:55:35.088Z",
    "updatedAt": "2022-06-06T21:55:35.088Z",
    "beautiful_place": {
      "id": 1,
      "name": "Boracay White Beach",
      "description": "Sea, Stretch and Sun!",
      "createdAt": "2022-06-06T21:49:35.227Z",
      "updatedAt": "2022-06-06T21:53:56.648Z",
      "locale": "en"
    },
    "createdBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    },
    "updatedBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    }
  },
  {
    "id": 3,
    "type": "vinyasa",
    "description": "This place needs some serious renovation. Let's do it.",
    "name": "Inca Strength Journey",
    "createdAt": "2022-06-06T21:58:39.571Z",
    "updatedAt": "2022-06-06T21:58:39.571Z",
    "beautiful_place": 2,
    "createdBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    },
    "updatedBy": {
      "id": 1,
      "firstname": "Patrick",
      "lastname": "Beach",
      "username": null,
      "email": "[email protected]",
      "password": "$2a$10$iUGfsRyOQJ3h.mss2xwgmu42UBtOkLsyX8MxpCRAOlDSHq2/IZlRu",
      "resetPasswordToken": null,
      "registrationToken": null,
      "isActive": true,
      "blocked": false,
      "preferedLanguage": null,
      "createdAt": "2022-05-23T19:16:33.057Z",
      "updatedAt": "2022-06-06T21:43:12.901Z"
    }
  }
]

The import will produce the following result:

  • For the 1st entry:

    1. Find the relation beautiful_place with id 2.
      If it exists in db, the relation entry is updated in db with the imported data. If it doesn't, the relation entry is created in db with the imported data.
    2. Update the createdBy and updatedBy fields with the id of the user importing the data.
    3. Create the course with the right beautiful_place id.
  • For the 2nd entry: same process

  • For the 3rd entry:

    1. The relation beautiful_place is a number. Since the relation already exists in db, the course will be linked to the right beautiful_place. If the number was referring to the id of a non existent beautiful_place, the relation would fallback to null.
    2. Same last 2 steps as the 1st entry.

Author

Baboo - @Baboo7

Acknowledgments

This plugin (and especially this README) took strong inspiration from the strapi-plugin-import-export-content from EdisonPeM.

Comments
  • [FEATURE] Import media with metadata (like id and caption)

    [FEATURE] Import media with metadata (like id and caption)

    Is your feature request related to a problem? Please describe. I need to import my multimedia files from an old system to strapi. Today it's possible to import it, but you can't mantain the ID reference, neither the caption, name or alternative text.

    Describe the solution you'd like Today if I import the following media object:

    [
      {
        "title": "test",
        "media": {
          "id": 31896,
          "url": "http://www.anteprojectos.com.pt/wp-content/uploads/2010/03/35850a.jpg",
          "name": "blablabla.jpg"
        }
      }
    ]
    
    • the id is not being respected. As I passed the url, it ignores the id, but it would be great to save that media with that id, although I am not sure that this is possible.
    • The name is not being respected.
    • it would be good to have the ability to set the alternativeText and caption.
    • Also, it's only possible to import media if it is related with other content. I wish I could import media directly to upload or file content-type.

    Describe alternatives you've considered I tried to import the files directly to the File content-type (via dashboard, importing to content-type File that is created by the core plugin "Upload"), but it does not work. It creates the register, but it does not upload the file.

    opened by matepaiva 21
  • [BUG] Importing Images while using AWS S3 strips extention and folder

    [BUG] Importing Images while using AWS S3 strips extention and folder

    Describe the bug I am uploading an entry into a collection which has an image. The image uploads but I then get a white screen on the collection page. Looking at the database, I can see the URL got imported, but the aws folder and the image extension both seemed to have been stripped out. If I upload the image using the media upload button it works properly.

    Screenshot 2022-07-28 at 20 06 23

    In the screenshot above, the first entry was uploaded normally, but the second and third were imported and they are missing both the image extension and the image folder. The second image should be https://giochigatsby.s3.eu-west-1.amazonaws.com/misc_images/chrismitoli_2021-10-26-170225_icpo.jpeg instead of https://giochigatsby.s3.eu-west-1.amazonaws.com/chrismitoli_2021-10-26-170225_icpoundefined.

    This is the import JSON I am currently using

    [
                {
                    "id": "23",
                    "username": "christopher",
                    "firstName": "Christopher",
                    "lastName": "Mitoli",
                    "photo": "https://giochigatsby.s3.eu-west-1.amazonaws.com/misc_images/chrismitoli_2021-10-26-170225_icpo.jpeg",
                    "metaTitle": "Christopher",
                    "metaDescription": null
                }
    ]
    

    Additional context I am using the AWS-S3 providerplugin

    opened by kenshobotuser 19
  • [BUG] Array of object are not imported in right order.

    [BUG] Array of object are not imported in right order.

    Describe the bug Hi ! I want to import an array of products. I can import it perfectly but i don't get the right order.

    To Reproduce Steps to reproduce the behavior: Import this JSON :

    JSON here ``` [ { "category": [ { "__component": "categories.category", "hide_products": false, "background_color": null, "gif_placement": null, "description": "", "force_open": false, "title": "Buoni prodotti, Antipasti", "force_show": true, "image": null, "product": [ { "title": "Stracciatella fumée", "price": 7, "is_unavailable": false, "all_services": true, "description": "Juste le crémeux de la burrata, à la petite cuillère", "show_image": null, "is_video_product": false, "allergens": " - ", "sku": "fr-fr5690", "kcal": "", "type": "V", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Salame Felino", "price": 7, "is_unavailable": false, "all_services": true, "description": "Le mythique saucisson Felino IGP de La Fattoria di Parma", "show_image": null, "is_video_product": false, "allergens": " - ", "sku": "fr-fr39417", "kcal": "", "type": "", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Mozza Opéra Rock", "price": 8, "is_unavailable": false, "all_services": true, "description": "Épatante mozza di bufala de 125gr, tomates datterino marinées et chutney de tomates, basilic", "show_image": null, "is_video_product": false, "allergens": "lait, sulfites ", "sku": "fr-fr46869", "kcal": "", "type": "V", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Prosciutto di Parma DOP 24 mesi", "price": 8, "is_unavailable": false, "all_services": true, "description": "L'inoubliable jambon en direct de la province de Parme, fondant à souhait", "show_image": null, "is_video_product": false, "allergens": " - ", "sku": "fr-fr15229", "kcal": "", "type": "", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Bresaola de bœuf Punta d'Anca", "price": 8, "is_unavailable": false, "all_services": true, "description": "Bœuf séché légèrement salé assaisonné d'un filet d'huile d'olive et de zestes de citron vert", "show_image": null, "is_video_product": false, "allergens": " - ", "sku": "fr-fr15447", "kcal": "", "type": "", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Green eyed peas", "price": 12.5, "is_unavailable": false, "all_services": true, "description": "Énorme burrata de 250gr, crème de petits pois, menthe et basilic", "show_image": null, "is_video_product": false, "allergens": "lait", "sku": "fr-fr44305", "kcal": "", "type": "V", "sub_category": { "title": "Buoni prodotti", "description": "Les produits bruts en direct de nos petits producteurs pour les kiffs en solo ou à plusieurs" } }, { "title": "Sweet es(capece)", "id": 99999, "price": 7, "is_unavailable": false, "all_services": true, "description": "Big empanadas farcis aux courgettes alla scapece, mozza fior di latte et Caciocavallo, acoquinés d'une sauce de tomates datterino confites", "show_image": null, "is_video_product": false, "allergens": "gluten de blé, lait, sulfites", "sku": "fr-fr46830", "kcal": "", "type": "V" }, { "title": "Pomodori ripieni", "price": 8, "is_unavailable": false, "all_services": true, "description": "Jolies tomates farcies à la pappa al pomodoro - compotée de pain perdu aux tomates San Marzano, ail, filet d'huile d’olive -, recouvertes d'un décadent pistou de basilic et cébette", "show_image": null, "is_video_product": false, "allergens": "gluten de blé, d'orge et de seigle, sésame, soja ", "sku": "fr-fr44264", "kcal": "", "type": "V" }, { "title": "Maritozzo alla parmigiana", "price": 9, "is_unavailable": false, "all_services": true, "description": "Sublime maritozzo : mœlleuse brioche fourrée à la parmigiana, aubergines cuites au four, sauce tomate san Marzano, mozza fior di latte, parmesan, basilic", "show_image": null, "is_video_product": false, "allergens": "céleri, gluten de blé, lait, oeuf, sulfites", "sku": "fr-fr48713", "kcal": "", "type": "" }, { "title": "Bar Simpson", "price": 10, "is_unavailable": false, "all_services": true, "description": "Dingue ceviche de bar, gaspacho de tomates datterino et poivrons rouges, concombres carosello et battaglione, citron vert, huile de sésame, fleur de sel et piment", "show_image": null, "is_video_product": false, "allergens": "céleri, sésame, lait, poisson, traces de ftuits à coques ", "sku": "fr-fr46836", "kcal": "", "type": "" }, { "title": "La numéro 10 des focaccia ", "price": 11, "is_unavailable": false, "all_services": true, "description": "L'indispensable de vos antipasti : généreuse focaccia à la farine grano arso, fromage stracchino et prosciutto di Parma on top", "show_image": null, "is_video_product": false, "allergens": "gluten de blé, lait", "sku": "fr-fr46899", "kcal": "", "type": "" }, { "title": "A veau de jouer !", "price": 11, "is_unavailable": false, "all_services": true, "description": "Tendrissime tartare de veau coupé au couteau, salsa tonnata, sauce verte, servie sur une croustillante tranche de pain de campagne", "show_image": null, "is_video_product": false, "allergens": "gluten de blé, d'orge et de seigle, lait, moutarde, oeuf, poisson, sésame, soja, sulfites ", "sku": "fr-fr46839", "kcal": "", "type": "" } ] } ], } ] ```

    Go to the content-type :

    And see the product order :

    Capture d’écran 2022-07-19 à 12 18 31

    Expected behavior Have the json's product order : 1/ Stracciatella fumée 2/ Salame Felino 3/ Mozza Opéra Rock 4/ Prosciutto di Parma DOP 24 mesi

    etc ...

    Thanks a lot for your very helpful work.

    opened by Charlesdoiron 19
  • [FEATURE] Support for media upload

    [FEATURE] Support for media upload

    Is your feature request related to a problem? Please describe. I need to be able to upload images related to other collection types, but I am not sure if it is possible or how to do it. If it's possible, it would be good to be documented. I could help with that.

    opened by matepaiva 12
  • Importing (JSON2) fails with

    Importing (JSON2) fails with "Cannot read properties of null (reading 'localizations')"

    I have a localised instance v4.4.5 with the latest version of Import/Export plugin.

    The instance has two languages enabled (Italian & English).

    When I try to import the following JSON2 entity

    { "version": 2, "data": { "api::allergen.allergen": { "1": { "id": 1, "name": "Glutine", "description": "Cereali, grano, segale, orzo, avena, farro, kamut, inclusi ibridati e derivati." } } } }

    it fails with

    "Cannot read properties of null (reading 'localizations')"

    error.

    opened by akarelinsbs 10
  • [BUG] Media (image) set to null after import, even if field is not in imported file

    [BUG] Media (image) set to null after import, even if field is not in imported file

    Describe the bug Everytime we update content by importing data using CSV or JSON, any media field on the root of the schema is set to null, even if the said files doesn't contain the field column

    The problem happens even if we let the column with exactly what was exported in the first place (full object or id)

    To Reproduce

    1. Create schema with media field in it
    2. Add some content with media such as an image
    3. Export data
    4. Import exported data after removing media column

    Expected behavior Media data is unchanged

    opened by NicolasBrondin 10
  • [BUG] Nested components with image fields do not get exported

    [BUG] Nested components with image fields do not get exported

    Using "strapi-plugin-import-export-entries": "^1.6.3" "@strapi/strapi": "4.1.12",

    Firstly thanks for making this plugin it has been great.

    One Issue I have found is when exporting a collection with nested components if the nested component has a image field, it doesn't get exported, all the other fields in the nested component get exported, just not the image field.

    For instance when using the Strapi SEO plugin, you have available an Seo component. Within the Seo component there is a component called "metaSocial" which as an image field, this image field doesnt get exported, in either json or csv

    See screenshot attached to see SEO component schema.

    https://imgur.com/a/KHtXIyT

    Thanks for any help

    opened by cthom-dev 10
  • add custom populate field for export data

    add custom populate field for export data

    Hello,

    First I want to say thank you for your work. I did a fork for add a custom populate field. indeed the default populate value (*) not work for me because I use a repeatable component with relations.

    It the result with the default populate value : * result1

    It the result with the custom value : IngredientToRecipe, IngredientToRecipe.ingredient, IngredientToRecipe.unit result2

    I don't know if this is interesting and if it can be useful to other people

    The export Modal with the new field exportModal

    you are did a great plugin

    opened by florianmarical 9
  • [HELP] Strapi relation collection

    [HELP] Strapi relation collection

    Hi, i try to found a forum or wiki if any know one i appreciate the link. I need help with import. I have a items collection and a category collection with a many to many relationship. How can i import the items? Thanks

    opened by Hertak 7
  • [fix] more unique file name

    [fix] more unique file name

    Many files with frequently used names like 1.jpg are ignored by the plugin (it uses a different file with the same name), so I often get wrong files attached to my imported entries.

    This is my fix for that.

    opened by Alex01d 6
  • [BUG]  Payload too large

    [BUG] Payload too large

    Hi there, First, thanks for this promising plugin :)

    I'm experimenting an issue when i try to import a JSON or CSV, the browser is raising a 413 HTTP error (payload too large). Is there a way to increase the limit ?

    opened by jonadeline 5
  • [BUG]

    [BUG]

    Data is getting duplicated when modifying the content after importing data in a repeatable component

    To Reproduce Steps to reproduce the behavior:

    1. I have a repeatable component with two fields label and url, I created a single collection type 'Test' with two of these repeatable component like below. image
    2. I have two different workspaces with same content type Test. One workspace is for exporting content and another workspace for importing the content file
    3. After adding content in 1st workspace and exporting it. Importing the exported content file in a 2nd workspace with same Test content type and it is getting successfully saved

    image

    1. After refreshing the page and trying to modifying or adding new data to the imported content image

    2. After clicking save the data is getting duplicated like below and also not able to delete duplicated content image

    Expected behavior After modifying the imported content, The content should not be duplicated in repeatable component

    Additional context I tried to use strapi unique field option but there is a bug in strapi that is not letting me add new data even though content is unique

    Im new to this. Let me know if there is anything im missing. Really appreciate your work, this plugin is very useful. Thanks in advance.

    opened by manikanta47052 0
  • [BUG] Strapi Admin Panel crashes when using the enumeration field with this plugin in latest version (4.5.5)

    [BUG] Strapi Admin Panel crashes when using the enumeration field with this plugin in latest version (4.5.5)

    Describe the bug Strapi's admin panel crashes if I interact with the Enumeration field (i.e. open the dropdown) when this plugin is enabled in Strapi version 4.5.5

    To Reproduce Steps to reproduce the behavior:

    1. Create a collection/single type with an enumeration field.
    2. Populate the collection/single type through the Content Manager.
    3. When you try to open the dropdown, you'll see the error.

    Expected behavior Able to interact with the enumeration field without any crash.

    Screenshots You can check out this video

    Additional context When I do remove this plugin, there is no crash hence I am convinced that it's a bug with this plugin although I have no idea why this plugin should affect the Enumeration field.

    opened by rubek-joshi 1
  • [BUG] Can't import entire db when using postgres

    [BUG] Can't import entire db when using postgres

    Describe the bug When I export the entire db from a postgres db and try to import it again I get a 403 error on POST /import-export-entries/import and a 500 error afterwards on GET http://localhost:1337/import-export-entries/import/model-attributes/custom:db

    The logs from my strapi application look like this:

    [2022-12-08 14:43:41.957] error: Cannot read properties of undefined (reading 'attributes')
    TypeError: Cannot read properties of undefined (reading 'attributes')
        at getModelAttributes (.../node_modules/strapi-plugin-import-export-entries/server/utils/models.js:89:46)
        at Object.getModelAttributesEndpoint [as getModelAttributes] (.../node_modules/strapi-plugin-import-export-entries/server/controllers/admin/import-controller/get-model-attributes.js:8:26)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at returnBodyMiddleware (.../node_modules/@strapi/strapi/lib/services/server/compose-endpoint.js:52:24)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at policiesMiddleware (.../node_modules/@strapi/strapi/lib/services/server/policy.js:24:11)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at .../node_modules/@strapi/strapi/lib/services/server/compose-endpoint.js:33:12
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
    [2022-12-08 14:43:46.827] http: POST /import-export-entries/import (37 ms) 403
    [2022-12-08 14:43:46.857] error: Cannot read properties of undefined (reading 'attributes')
    TypeError: Cannot read properties of undefined (reading 'attributes')
        at getModelAttributes (.../node_modules/strapi-plugin-import-export-entries/server/utils/models.js:89:46)
        at Object.getModelAttributesEndpoint [as getModelAttributes] (.../node_modules/strapi-plugin-import-export-entries/server/controllers/admin/import-controller/get-model-attributes.js:8:26)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at returnBodyMiddleware (.../node_modules/@strapi/strapi/lib/services/server/compose-endpoint.js:52:24)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at policiesMiddleware (.../node_modules/@strapi/strapi/lib/services/server/policy.js:24:11)
        at dispatch (.../node_modules/koa-compose/index.js:42:32)
        at .../node_modules/@strapi/strapi/lib/services/server/compose-endpoint.js:33:12
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
    

    In the browser console I'm getting the following error messages:

    main.a5adda14.js:9121          GET http://localhost:1337/import-export-entries/import/model-attributes/custom:db 500 (Internal Server Error)
    ...
    main.a5adda14.js:9121 Uncaught (in promise) Error: Internal Server Error
        at main.a5adda14.js:9121:12290
    (anonymous) @ main.a5adda14.js:9121
    ...
    main.a5adda14.js:9121          POST http://localhost:1337/import-export-entries/import 403 (Forbidden)
    Tr @ main.a5adda14.js:9121
    ...
    main.a5adda14.js:9121          GET http://localhost:1337/import-export-entries/import/model-attributes/custom:db 500 (Internal Server Error)
    ...
    main.a5adda14.js:9121 Uncaught (in promise) Error: Internal Server Error
        at main.a5adda14.js:9121:12290
    

    Three requests are made: 1.

    Request URL: http://localhost:1337/import-export-entries/import/model-attributes/custom:db
    Request Method: GET
    Status Code: 500 Internal Server Error
    Remote Address: 127.0.0.1:1337
    Referrer Policy: no-referrer
    
    Request URL: http://localhost:1337/import-export-entries/import
    Request Method: POST
    Status Code: 403 Forbidden
    Remote Address: 127.0.0.1:1337
    Referrer Policy: no-referrer
    
    Request URL: http://localhost:1337/import-export-entries/import/model-attributes/custom:db
    Request Method: GET
    Status Code: 500 Internal Server Error
    Remote Address: 127.0.0.1:1337
    Referrer Policy: no-referrer
    

    To Reproduce Steps to reproduce the behavior:

    1. Go to http://localhost:1337/admin/plugins/import-export-entries
    2. Click on export --> fetch data --> Download file --> save file
    3. Click on import --> select the saved file --> import
    4. See error in browser console and application logs

    Expected behavior The import from a complete db export works. The data is imported in the database and visible in the admin panel

    Additional context Version: "strapi-plugin-import-export-entries": "^1.18.0"

    database version: "pg": "^8.8.0"

    I'm a superuser in my postgres db

    opened by landoephan 13
  • [BUG] Error when importing content-types with component field and localization

    [BUG] Error when importing content-types with component field and localization

    Describe the bug The import doesn't work when I have a content type with a component field and localization enabled.

    The error message is error: link must be aobjecttype, but the final value was: '8'

    When I disable the localization for that content type the import works. The exported json looks like this:

    {
    	"version": 2,
    	"data": {
    		"helpers.portal-link": {
    			"8": {
    				"id": 8,
    				"url": "test",
    				"text": "test"
    			},
    			"10": {
    				"id": 10,
    				"url": "test",
    				"text": "test 2"
    			}
    		},
    		"api::test-with-comp.test-with-comp": {
    			"2": {
    				"id": 2,
    				"createdAt": "2022-12-08T12:51:32.164Z",
    				"updatedAt": "2022-12-08T12:53:37.559Z",
    				"publishedAt": "2022-12-08T12:51:33.229Z",
    				"link": 8,
    				"createdBy": null,
    				"updatedBy": null
    			},
    			"3": {
    				"id": 3,
    				"createdAt": "2022-12-08T12:57:02.387Z",
    				"updatedAt": "2022-12-08T12:57:02.387Z",
    				"publishedAt": null,
    				"link": 10,
    				"createdBy": null,
    				"updatedBy": null
    			}
    		}
    	}
    }
    

    And with the localization activated:

    {
    	"version": 2,
    	"data": {
    		"api::test-with-comp.test-with-comp": {
    			"4": {
    				"id": 4,
    				"createdAt": "2022-12-08T13:00:22.485Z",
    				"updatedAt": "2022-12-08T13:01:31.555Z",
    				"publishedAt": "2022-12-08T13:00:24.717Z",
    				"locale": "de",
    				"link": 11,
    				"localizations": [],
    				"createdBy": null,
    				"updatedBy": null
    			},
    			"5": {
    				"id": 5,
    				"createdAt": "2022-12-08T13:00:33.565Z",
    				"updatedAt": "2022-12-08T13:01:31.564Z",
    				"publishedAt": "2022-12-08T13:00:34.888Z",
    				"locale": "de",
    				"link": 12,
    				"localizations": [],
    				"createdBy": null,
    				"updatedBy": null
    			}
    		},
    		"helpers.portal-link": {
    			"11": {
    				"id": 11,
    				"url": "test",
    				"text": "test"
    			},
    			"12": {
    				"id": 12,
    				"url": "test",
    				"text": "test 2"
    			}
    		}
    	}
    }
    

    When I remove the component from my content type everything works aswell, no matter if localization is enabled or not.

    To Reproduce Steps to reproduce the behavior:

    1. Create a content-type with localization enabled and a field with a component
    2. create some content for that content-type
    3. export that content using this plugin
    4. import the exported content again
    5. see error

    Expected behavior Data is imported without errors

    opened by landoephan 0
  • [FEATURE] Strapi Internationalization for Translations

    [FEATURE] Strapi Internationalization for Translations

    Is your feature request related to a problem? Please describe. Does this plugin support Strapi Internationalization, if so, could this be added so we can upload content in multiple languages?

    opened by cawoodm 0
  • import export Unable to customize Chinese English translation

    import export Unable to customize Chinese English translation

    The import and export plug-in is installed in the strapi, and then the global golbal. method is used to do international translation, but it does not work. How do I do international translation? image

    opened by guoduhw 0
Owner
Baptiste Studer
Baptiste Studer
🚀 NFTank (NFT tank for dummies) will allow developers to quickly request NFTs to personal wallets or smart contracts in just a few clicks.

??‍♂️ NFTank ?? NFTank (NFT tank for dummies) will allow developers to quickly request NFTs to personal wallets or smart contracts in just a few click

buidler's hub 8 Nov 8, 2022
Crypto-tracker - Get crypto currency data in one click. Followed by a few more clicks.

https://crypto-tracker-ayaanzaveri08.vercel.app/ Crypto Tracker Crypto Tracker tracks crypto with the CoinGecko API. This app uses the React framework

Ayaan Zaveri 0 Apr 30, 2022
This project is built with JavaScript, Webpack, HTML & CSS, Leaderboard api. When user clicks on Refresh button it hits the api and responds with the data, The user can also post data to the api

leaderboad Description the project. this project is about the leaderboad i did during Microverse to build a website for adding Data to the API and fet

Emmanuel Moombe 4 May 30, 2022
JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

Aykut Saraç 20.6k Jan 4, 2023
simple-remix-blog is a blog template built using Remix and TailwindCSS. Create your own blog in just a few minutes!

simple-remix-blog is a blog template built using remix.run and TailwindCSS. It supports markdown and MDX for the blog posts. You can clone it and star

José Miguel Álvarez Vañó 8 Dec 8, 2022
Run a completely functional backend in just a few minutes.

Genezio Genezio is a platform for developers that want to write a backend in a very simple way. Just write a simple class using your preferred program

null 6 Dec 12, 2022
Smart selection with double clicks for VS Code.

Smart Clicks VS Code Smart selection with double clicks for VS Code. GIF Demo Usage Double clicks on the code. Rules bracket-pair Pair to inner conten

Anthony Fu 504 Dec 28, 2022
Python based web application to import, connect and analyze manufacturing data from multiple data sources.

Analysis Platform Analysis Platform is an open source web application to import, connect and visualize factory IoT data. It helps to collect, link and

Analysis Platform +DN7 7 Dec 1, 2022
Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database using SQL queries

Microsoft Excel Add-in for Developers About Us Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database u

OSLabs Beta 30 Sep 30, 2022
Visualize, modify, and build your database with dbSpy! An open-source data modeling tool to facilitate relational database development.

Visualize, modify, and build your database with dbSpy! dbSpy is an open-source data modeling tool to facilitate relational database development. Key F

OSLabs 115 Dec 22, 2022
A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.

Obsidian Media DB Plugin A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your va

Moritz Jung 58 Dec 21, 2022
A Tempermonky / Greasemonkey plugin which can help you export your class schedule to the calendar on your phone / pad / PC / Mac.

WHU Class Schedule Export as iCS Languages: English | 簡體中文 | 繁體中文 Changelog v0.90.1 - Sep 18, 2022 Fix bugs: Fix an error when a class have multiple s

Ostrich_B 6 Sep 7, 2022
Deploy your uAdmin project and host it with a single click (and a few more steps 👀) !

Golang and uAdmin CI/CD using ?? Railway! Steps to Deploy Make sure to create a Github account and link it with ?? Railway Click Give your new Reposit

Gaurav Gosain 6 Nov 13, 2022
Share short notes with just a link. No database. No storage!

Patra | Share your notes! You can share short notes with just a link. No database. No storage! write short articles in markdown and share the link! wr

Sharath Kumar 9 Nov 12, 2022
A user-owned database. Just for ewe🐑

eweserdb ?? ?? ?? EweserDB, the user-owned database ?? ?? ?? A User owned database EweserDB empowers developers to quickly create a cloud-synced, loca

Eweser DB 5 Oct 10, 2022
🚀 A mongoose plugin to monetize your apis in few lines of code

Stripe Mongoose Api Stripe Mongoose Api is a Mongoose plugin that simplifies building checkout and payment system for apis with stripe. It will provid

Moscatelli Marco 13 Dec 29, 2022
A meme generator plugin for Figma and FigJam. Import memes from all over the internet with customizable captions and share it far and wide.

Is This A Meme? ???? ?? A meme generator plugin for Figma and FigJam. Import memes from all over the internet, add your captions, and share it far and

Aashrey Sharma 6 Aug 30, 2022
Import flow for Excel (.xlsx) and CSV file with automated column matching and validation.

RSI react-spreadsheet-import ⚡️ A component used for importing XLS / XLSX / CSV documents built with Chakra UI. Import flow combines: ?? Uploader ⚙️ P

Ugnis 123 Dec 24, 2022
⚡Chrome extension allows you to create lists of Google and Github dork to open multiple tabs with one click, import "scope/out of scope" from #HackerOne #Bugcrowd #Intigriti ...

FastDork v0.1 This chrome extension allows you to create lists of Google and Github dork to open multiple tabs with one click, import "scope/out of sc

skvndr 74 Dec 31, 2022