Migration guide from alpha.11 to alpha.12

This migration guide is a mix of migrations from 3.0.0-alpha.11.1 to 3.0.0-alpha.11.2, 3.0.0-alpha.11.2 to 3.0.0-alpha.11.3 and from 3.0.0-alpha.11.3 to 3.0.0-alpha.12.1.3.


Feel free to join us on Slack and ask questions about the migration process.


Getting started

Install Strapi alpha.12.1.3 globally on your computer. To do so run npm install strapi@3.0.0-alpha.12.1.3 -g.

When it's done, generate a new empty project strapi new myNewProject (don't pay attention to the database configuration).


Configurations

You will have to update just 1 file: package.json

  • Edit the Strapi's dependencies version: (move Strapi's dependencies to 3.0.0-alpha.12.1.3 version) in package.json file
{
  "dependencies": {
    "lodash": "4.x.x",
    "strapi": "3.0.0-alpha.12.1.3",
    "strapi-mongoose": "3.0.0-alpha.12"
  }
}

Update the Admin

Delete your old admin folder and replace it by the new one.


Update the Plugins

Copy the fields and relations you had in your /plugins/users-permissions/models/User.settings.json and /plugins/users-permissions/config/jwt.json file in the new one.

Then, delete your old plugins folder and replace it by the new one.


Update roles

This update is if you come from version before alpha-11.2

Update type of Guest role to public in your database. You can also update name and description:

{
  "name": "Public",
  "description": "Default role given to unauthenticated user.",
  "type": "public"
}

Create Authenticated role:

{
  "name": "Authenticated",
  "description": "Default role given to authenticated user.",
  "type": "authenticated"
}

In Users & Permissions > Advanced in admin panel update default role to Authenticated

You also will have to reset your roles permissions.


Update bookshelf filters

This update is if you come from version before alpha-11.3

You will have to replace your fetchAll services queries of your generated API:

_.forEach(convertedParams.where, (where, key) => {
   if (_.isArray(where.value)) {
     for (const value in where.value) {
       qb[value ? 'where' : 'orWhere'](key, where.symbol, where.value[value])
     }
   } else {
     qb.where(key, where.symbol, where.value);
   }
 });

 if (convertedParams.sort) {
   qb.orderBy(convertedParams.sort.key, convertedParams.sort.order);
 }

 qb.offset(convertedParams.start);

 qb.limit(convertedParams.limit);

That's all, you have now upgraded to Strapi alpha.12.1.3.