Upgrade to v5

The purpose of this note is to help developers to upgrade their agent from v4 to v5. Please read carefully and integrate the following breaking changes to ensure a smooth upgrade.​

Upgrade to v5

Upgrading to v5

To upgrade to v5, simply run:

npm install forest-express-sequelize@^5.0.0

In case of a regression introduced in Production after the upgrade, a rollback to your previous agent is the fastest way to restore your admin panel.

Breaking changes

Smart Actions defined with custom routes

If your Forest Admin configuration contains Smart Actions using POST or PUT method with a custom endpoint, you'll have to adapt your Smart Action code.

Here is an example of Smart Action to adapt:

/forest/companies.js
const Liana = require('forest-express-sequelize');

Liana.collection('companies', {
  actions: [
    {
      name: 'Mark as live',
      httpMethod: 'POST',
      endpoint: 'my-custom-route/mark-as-live', // custom route
    },
  ],
});
/routes/companies.js
const express = require('express');
const router = express.Router();
const Liana = require('forest-express-sequelize');
const models = require('../models');

router.post(
  '/my-custom-route/mark-as-live',
  Liana.ensureAuthenticated,
  (req, res) => {
    let companyId = req.body.data.attributes.ids[0];

    return models.companies
      .update({ status: 'live' }, { where: { id: companyId } })
      .then(() => {
        res.send({ success: 'Company is now live!' });
      });
  }
);

module.exports = router;

To make sure it doesn't break when you upgrade to v5, you must use thebodyParser.json() middleware in the route configuration:

router.post('/my-custom-route/mark-as-live', Liana.ensureAuthenticated, bodyParser.json(),

The v5-compatible result would look like this:

/routes/companies.js
const express = require('express');
const router = express.Router();
const Liana = require('forest-express-sequelize');
const models = require('../models');
const bodyParser = require('body-parser'); // NOTICE: Require the body-parser dependency.

router.post(
  '/my-custom-route/mark-as-live',
  Liana.ensureAuthenticated,
  bodyParser.json(),
  (req, res) => {
    let companyId = req.body.data.attributes.ids[0];

    return models.companies
      .update({ status: 'live' }, { where: { id: companyId } })
      .then(() => {
        res.send({ success: 'Company is now live!' });
      });
  }
);

module.exports = router;

Important Notice

Changelogs

This release note covers only the major changes. To learn more, please refer to the changelogs in our different repositories:

Last updated

Was this helpful?