# Migration guide from alpha.25 to alpha.26.2
Here are the major changes:
- Fix some issues
Useful links:
- Changelog: https://github.com/strapi/strapi/releases/tag/v3.0.0-alpha.26 (opens new window)
- GitHub diff: https://github.com/strapi/strapi/compare/v3.0.0-alpha.25...v3.0.0-alpha.26.2 (opens new window)
💡 TIP
Feel free to join us on Slack (opens new window) and ask questions about the migration process.
# Getting started
Install Strapi alpha.26.2
globally on your computer. To do so run npm install strapi@3.0.0-alpha.26.2 -g
.
When it's done, generate a new empty project strapi new myNewProject
(don't pay attention to the database configuration).
# Update node modules
Update the Strapi's dependencies version (move Strapi's dependencies to 3.0.0-alpha.26.2
version) of your project.
Run npm install strapi@3.0.0-alpha.26.2 --save
to update your strapi version.
# Update the Admin
💡 TIP
If you performed updates in the Admin, you will have to manually migrate your changes.
Delete your old admin folder and replace it with the new one.
# Update the Plugins
💡 TIP
If you did a custom update on one of the plugins, you will have to manually migrate your update.
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 with the new one.
# Add deep filtering feature
By default your generated API will not have the deep filtering feature provide by this release. You will have to make some updates.
# Updating Mongoose
Updating your controllers: https://github.com/strapi/strapi/pull/2961/files#diff-008d6bf29828238415549d6caf613284 (opens new window)
You will have to add , next, { populate } = {}
in the arguments of the find
function.
Before
find: async (ctx) => {
// ...
},
After
find: async (ctx, next, { populate } = {}) => {
// ...
},
Updating your services: https://github.com/strapi/strapi/pull/2961/files#diff-c36b911d1bc2922e1d7cf93ae692e054 (opens new window)
You will have to add this requirement on the top of you file const { convertRestQueryParams, buildQuery } = require('strapi-utils');
Replace the fetchAll
function by the following code.
fetchAll: (params, populate) => {
const filters = convertRestQueryParams(params);
const populateOpt = populate || <%= globalID %>.associations
.filter(ast => ast.autoPopulate !== false)
.map(ast => ast.alias);
return buildQuery({
model: <%= globalID %>,
filters,
populate: populateOpt,
});
},
Replace the count
function by the following code.
count: (params) => {
const filters = convertRestQueryParams(params);
return buildQuery({
model: <%= globalID %>,
filters: { where: filters.where },
})
.count();
And replace <%= globalID %>
by the Global of your API.
# Updating Bookshelf
Updating your controllers: https://github.com/strapi/strapi/pull/2961/files#diff-a2a09f28ea5f2a78c485c232dd2dbfde (opens new window)
You will have to add , next, { populate } = {}
in the arguments of the find
function.
Before
find: async (ctx) => {
// ...
},
After
find: async (ctx, next, { populate } = {}) => {
// ...
},
Send this new argument in the service function.
Before return strapi.services.<%= id %>.fetchAll(ctx.query);
After: return strapi.services.<%= id %>.fetchAll(ctx.query, populate);
It will be the same update for the count
function.
Updating your services: https://github.com/strapi/strapi/pull/2961/files#diff-61ba361ed6161efcd5f4e583001cc9c9 (opens new window)
You will have to add this requirement on the top of you file const { convertRestQueryParams, buildQuery } = require('strapi-utils');
Replace the fetchAll
function by the following code.
fetchAll: (params, populate) => {
// Select field to populate.
const withRelated = populate || <%= globalID %>.associations
.filter(ast => ast.autoPopulate !== false)
.map(ast => ast.alias);
const filters = convertRestQueryParams(params);
return <%= globalID %>.query(buildQuery({ model: <%= globalID %>, filters }))
.fetchAll({ withRelated })
.then(data => data.toJSON());
},
Replace the count
function by the following code.
count: (params) => {
// Convert `params` object to filters compatible with Bookshelf.
const filters = convertRestQueryParams(params);
return <%= globalID %>.query(buildQuery({ model: <%= globalID %>, filters: _.pick(filters, 'where') })).count();
},
And replace <%= globalID %>
by the Global of your API.
That's all, you have now upgraded to Strapi alpha.26.2
.