{"id":48485,"date":"2024-01-05T17:15:46","date_gmt":"2024-01-05T11:45:46","guid":{"rendered":"https:\/\/www.oneclickitsolution.com\/blog\/?p=48485"},"modified":"2025-03-18T11:57:47","modified_gmt":"2025-03-18T06:27:47","slug":"migrations-with-typeorm","status":"publish","type":"post","link":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm","title":{"rendered":"Migrations with TypeORM in NestJs"},"content":{"rendered":"\n<p>Migrations are a crucial part of database management and versioning in NestJS applications using TypeORM. TypeORM provides migration support to help you manage database schema changes over time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-why-we-need-migrations-in-nestjs\">Why We Need Migrations in NestJs ?<\/h2>\n\n\n\n<p>As we all know that NestJs provide auto-sync for our entity changes to the database, then the first question that was raised in our head that why we need migration?&nbsp;<\/p>\n\n\n\n<p>So, the answer is that we can use auto-sync functionality, but in some cases when <strong><a href=\"https:\/\/www.oneclickitsolution.com\/services\/mobile-app-development\/\" target=\"_blank\" rel=\"noreferrer noopener\">our application<\/a><\/strong> is Live, and we have data in our database, then some direct modifications in our database might generate issues. So it is Unsafe to use synchronize on production.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Advantages<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We can run migration whenever we need.<\/li>\n\n\n\n<li>Reduce error generation on production.<\/li>\n\n\n\n<li>We can generate migration files from entity changes directly. We don\u2019t need to write migration files.<\/li>\n\n\n\n<li>This is particularly useful when working in teams or deploying updates to production systems without disrupting existing data.<\/li>\n\n\n\n<li>Each migration file represents a specific set of changes, making it easier to track and manage schema modifications over time.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Disadvantage<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We need to generate migration files for every changes in our entity. After that we need to run it to alter database.<\/li>\n\n\n\n<li>If you&#8217;re new to migrations or TypeORM, there may be a learning curve involved in understanding the concepts and best practices associated with migrations. This can slow down initial development and require additional effort to grasp the migration workflow.<\/li>\n\n\n\n<li>When performing database schema changes, there is always a risk of data loss if not handled carefully. Modifying or deleting columns, tables, or relationships in migrations without proper backup strategies or safeguards can lead to unintentional data loss<\/li>\n<\/ul>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.oneclickitsolution.com\/contact-us\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/NodeJS-CTA-1.png\" alt=\"NodeJS Developer\" class=\"wp-image-48515\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Example<\/h2>\n\n\n\n<p>Suppose you have an entity named Student something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">import { BaseEntity, Column,Entity, PrimaryGeneratedColumn} from 'typeorm';\n \n@Entity('students')\nexport class Students extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: string;\n \n @Column()\n name: string;\n \n @Column()\n marks: number;\n\n}\n<\/code><\/pre>\n\n\n\n<p>Now you need to alter \u201c<strong>name<\/strong>\u201d column with \u201c<strong>student_name<\/strong>\u201d then you need to create a migration file with the below SQL query<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">ALTER TABLE \"students\" ALTER COLUMN \"name\" RENAME TO \"student_name\";<\/code><\/pre>\n\n\n\n<p>TypeORM provides such functionality that you can store such queries and execute them to alter your database. This functionality is <strong><a href=\"https:\/\/www.oneclickitsolution.com\/blog\/best-practices-for-securing-data-and-data-migration-in-the-cloud\/\" target=\"_blank\" rel=\"noreferrer noopener\">migrations<\/a><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Create New Migrations?<\/h2>\n\n\n\n<p>Before creating migrations you need to set up your TypeORM config file something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">{\n \"type\": \"postgres\",\n \"host\": \"postgres\",\n \"port\": 5432,\n \"username\": \"postgres\",\n \"password\": \"postgres\",\n \"database\": \"elite_opinio\",\n \"entities\": [\n   \"\/usr\/src\/eliteopinio\/backend\/dist\/@config\/..\/**\/entities\/*.entity.{js,ts}\"\n ],\n \"synchronize\": false,\n \"migrations\": [\n   \"src\/migrations\/*.ts\"\n ],\n \"migrationsTableName\": \"migrations_TypeORM\",\n \"cli\": {\n   \"migrationsDir\": \"src\/migrations\"\n },\n \"seeds\": [\n   \"\/usr\/src\/eliteopinio\/backend\/dist\/**\/entities\/*.seeder.{js,ts}\"\n ],\n \"factories\": [\n   \"\/usr\/src\/eliteopinio\/backend\/dist\/**\/entities\/*.factory.{js,ts}\"\n ]\n}\n<\/code><\/pre>\n\n\n\n<p>First of all, you need to close auto sync by setting <strong>&#8220;synchronize&#8221;: false<\/strong><\/p>\n\n\n\n<p>Then you need to specify migration files path in <strong>&#8220;cli&#8221;: {&#8220;migrationsDir&#8221;: &#8220;src\/migrations&#8221;}<\/strong>, where all your migration files will generate.<\/p>\n\n\n\n<p>While running migrations it will take files from <strong>&#8220;migrations&#8221; : [&#8220;src\/migrations\/*.ts&#8221;] <\/strong>path.<\/p>\n\n\n\n<p>Also, we need to add a script for TypeORM in <strong>package.json<\/strong> file like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">\"TypeORM\": \"ts-node .\/node_modules\/TypeORM\/cli.js -f .\/ormconfig.json\"<\/code><\/pre>\n\n\n\n<p>After setting the config file you need to create a new migration file with: TypeORM migration:create -n PostRefactoring<\/p>\n\n\n\n<p>This command will generate a new file in src folder like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">import {MigrationInterface, QueryRunner} from \"TypeORM\";\n \nexport class Student12345 implements MigrationInterface {\n \n   public async up(queryRunner: QueryRunner): Promise&lt;void&gt; {}\n \n   public async down(queryRunner: QueryRunner): Promise&lt;void&gt; {}\n}\n<\/code><\/pre>\n\n\n\n<p>This file has contain two methods \u201cup\u201d and \u201cdown\u201d. \u201cup\u201d is where you need to write your new SQL changes and \u201cdown\u201d is used to revert those changes.<\/p>\n\n\n\n<p>Now to alter our column we need to write query something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">import {MigrationInterface, QueryRunner} from \"TypeORM\";\n \nexport class Student12345 implements MigrationInterface {\n  public async up(queryRunner: QueryRunner): Promise&lt;void&gt; {\n       await queryRunner.query(`ALTER TABLE \"students\" ADD \"status\" boolean NOT NULL DEFAULT false`);\n   }\n\n   public async down(queryRunner: QueryRunner): Promise&lt;void&gt; {\n       await queryRunner.query(`ALTER TABLE \"students\" DROP COLUMN \"status\"`);\n   }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Run Migration<\/h2>\n\n\n\n<p>To run all migrations we need to execute the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">npm run TypeORM migration:run<\/code><\/pre>\n\n\n\n<p>It will execute the file and alter the column of the student&#8217;s table.<\/p>\n\n\n\n<p>Now, if we follow this process then we need to write queries for every single change. And execute migrations every time. But TypeORM provides functionality to generate migration automatically from entity changes.<\/p>\n\n\n\n<p>For doing that you just need to run the below command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">npm run TypeORM migration:generate -- -n MigrationName<\/code><\/pre>\n\n\n\n<p>This command will generate all new changes in entities that are not in the database. So you can generate files and make changes in the database by running migrations.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.oneclickitsolution.com\/contact-us\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"275\" src=\"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/NodeJS-CTA-2-1.png\" alt=\"NodeJS Developer\" class=\"wp-image-55367\" srcset=\"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/NodeJS-CTA-2-1.png 1200w, https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/NodeJS-CTA-2-1-768x176.png 768w, https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/NodeJS-CTA-2-1-20x5.png 20w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Migrations are an essential part of managing database schemas in NestJS applications using TypeORM. They offer a structured approach to handle changes, ensuring data integrity and preventing disruptions in production environments. By utilizing migrations, developers can maintain control over their database structure while minimizing risks associated with direct modifications. <\/p>\n\n\n\n<p>This practice not only streamlines collaboration in team settings but also safeguards against potential data loss. As you continue to build and scale your applications, incorporating a robust migration strategy will be key to maintaining a reliable and efficient database system.<\/p>\n\n\n\n<p>Ready to enhance your NestJS application with efficient database migrations? <a href=\"https:\/\/www.oneclickitsolution.com\/contact-us\/\" target=\"_blank\" rel=\"noreferrer noopener\">Contact us today<\/a> to discuss your project and how we can support your development journey!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Migrations are a crucial part of database management and versioning in NestJS applications using TypeORM. TypeORM provides migration support to help you manage database schema changes over time. Why We Need Migrations in NestJs ? As we all know that NestJs provide auto-sync for our entity changes to the database, then the first question that &hellip;<\/p>\n","protected":false},"author":13,"featured_media":54523,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[838,22],"tags":[945,916,944],"class_list":["post-48485","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-solutions","category-technology","tag-migration","tag-nestjs","tag-typeorm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v24.8.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Essential Guide to NestJS Migrations with TypeORM 2026<\/title>\n<meta name=\"description\" content=\"Learn why migrations are crucial for NestJS apps using TypeORM, ensuring data integrity and streamlined management.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Essential Guide to NestJS Migrations with TypeORM 2026\" \/>\n<meta property=\"og:description\" content=\"Learn why migrations are crucial for NestJS apps using TypeORM, ensuring data integrity and streamlined management.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm\" \/>\n<meta property=\"og:site_name\" content=\"OneClick IT Consultancy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/oneclickconsultancy\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-05T11:45:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-18T06:27:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rajesh Shiyani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OneclickIT\" \/>\n<meta name=\"twitter:site\" content=\"@OneclickIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rajesh Shiyani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Essential Guide to NestJS Migrations with TypeORM 2026","description":"Learn why migrations are crucial for NestJS apps using TypeORM, ensuring data integrity and streamlined management.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm","og_locale":"en_US","og_type":"article","og_title":"Essential Guide to NestJS Migrations with TypeORM 2026","og_description":"Learn why migrations are crucial for NestJS apps using TypeORM, ensuring data integrity and streamlined management.","og_url":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm","og_site_name":"OneClick IT Consultancy","article_publisher":"https:\/\/www.facebook.com\/oneclickconsultancy","article_published_time":"2024-01-05T11:45:46+00:00","article_modified_time":"2025-03-18T06:27:47+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png","type":"image\/png"}],"author":"Rajesh Shiyani","twitter_card":"summary_large_image","twitter_creator":"@OneclickIT","twitter_site":"@OneclickIT","twitter_misc":{"Written by":"Rajesh Shiyani","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#article","isPartOf":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm"},"author":{"name":"Rajesh Shiyani","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#\/schema\/person\/800637c494b48280bd7d08cb952782b3"},"headline":"Migrations with TypeORM in NestJs","datePublished":"2024-01-05T11:45:46+00:00","dateModified":"2025-03-18T06:27:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm"},"wordCount":702,"commentCount":0,"publisher":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#primaryimage"},"thumbnailUrl":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png","keywords":["Migration","NestJs","TypeORM"],"articleSection":["Solutions","Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm","url":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm","name":"Essential Guide to NestJS Migrations with TypeORM 2026","isPartOf":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#primaryimage"},"image":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#primaryimage"},"thumbnailUrl":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png","datePublished":"2024-01-05T11:45:46+00:00","dateModified":"2025-03-18T06:27:47+00:00","description":"Learn why migrations are crucial for NestJS apps using TypeORM, ensuring data integrity and streamlined management.","breadcrumb":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#primaryimage","url":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png","contentUrl":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/02\/migrations-with-typeorm-in-nestjs.png","width":1200,"height":628,"caption":"Migrations with TypeORM in NestJS"},{"@type":"BreadcrumbList","@id":"https:\/\/www.oneclickitsolution.com\/blog\/migrations-with-typeorm#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.oneclickitsolution.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrations with TypeORM in NestJs"}]},{"@type":"WebSite","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#website","url":"https:\/\/www.oneclickitsolution.com\/blog\/","name":"OneClick IT Consultancy","description":"We Build Brands from Ideas","publisher":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/#organization"},"alternateName":"OneClick IT Solution","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.oneclickitsolution.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#organization","name":"OneClick IT Consultancy","alternateName":"OneClick IT Solution","url":"https:\/\/www.oneclickitsolution.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/10\/oneclick-official-logo.png","contentUrl":"https:\/\/www.oneclickitsolution.com\/blog\/wp-content\/uploads\/2022\/10\/oneclick-official-logo.png","width":100,"height":100,"caption":"OneClick IT Consultancy"},"image":{"@id":"https:\/\/www.oneclickitsolution.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/oneclickconsultancy","https:\/\/x.com\/OneclickIT","https:\/\/www.instagram.com\/oneclick.it.consultancy\/","https:\/\/www.linkedin.com\/company\/one-click-it-consultancy\/","https:\/\/www.pinterest.com\/oneclickitconsultancy\/","https:\/\/www.youtube.com\/channel\/UCsEG6aiwOwvYrcZxMoP5xjg","https:\/\/oneclickit.tumblr.com\/","https:\/\/dribbble.com\/oneclickitconsultancy"]},{"@type":"Person","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#\/schema\/person\/800637c494b48280bd7d08cb952782b3","name":"Rajesh Shiyani","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.oneclickitsolution.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2e3933b9456aa4aede04db5a527d2a1c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e3933b9456aa4aede04db5a527d2a1c?s=96&d=mm&r=g","caption":"Rajesh Shiyani"},"description":"Experienced Web Developer with a demonstrated history of working in the IT industry. Skilled in NodeJs, Angular, Laravel, CodeIgniter, HTML, CSS, Javascript, Jquery, My SQL, Postgresql. Always looking for new technologies to explore and learn new things.","sameAs":["oneclick"],"jobTitle":"Software Engineer","url":"https:\/\/www.oneclickitsolution.com\/blog\/author\/rajesh"}]}},"_links":{"self":[{"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/posts\/48485"}],"collection":[{"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/comments?post=48485"}],"version-history":[{"count":1,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/posts\/48485\/revisions"}],"predecessor-version":[{"id":61894,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/posts\/48485\/revisions\/61894"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/media\/54523"}],"wp:attachment":[{"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/media?parent=48485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/categories?post=48485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oneclickitsolution.com\/blog\/wp-json\/wp\/v2\/tags?post=48485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}