Upgrade to v5
The purpose of this note is to help developers to upgrade their liana from v4 to v5. Please read carefully and integrate the following breaking changes to ensure a smooth upgrade.
Before upgrading to v5, consider the below breaking changes.
As for any dependency upgrade, it's very important to test this upgrade in your testing environments. Not doing so could result in your admin panel being unusable.
To upgrade to v5, simply run:
SQL
Mongodb
npm install [email protected]^5.0.0
npm install [email protected]^5.0.0
In case of a regression introduced in Production after the upgrade, a rollback to your previous liana is the fastest way to restore your admin panel.
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:
SQL
Mongodb
/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
}],
});
/forest/companies.js
const Liana = require('forest-express-mongoose');
Liana.collection('companies', {
actions: [{
name: 'Mark as live',
httpMethod: 'POST',
endpoint: 'my-custom-route/mark-as-live', // custom route
}],
});
SQL
Mongodb
/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;
/routes/companies.js
const express = require('express');
const router = express.Router();
const Liana = require('forest-express-mongoose');
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 the
bodyParser.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:
SQL
Mongodb
/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;
/routes/companies.js
const express = require('express');
const router = express.Router();
const Liana = require('forest-express-mongoose');
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;
This release note covers only the major changes. To learn more, please refer to the changelogs in our different repositories:
Last modified 1yr ago