As the name suggests, Restify is devoted solely to creating an elegant REST API. The API is the core of your site or service, so it makes sense to use a framework that excels at that.
Generates swagger.json based on API definition. With this metadata about the API, client code can be generated for almost any mainstream language. There is also a side-project which can generate Angular 2+ client code (model and HTTP-access): https://github.com/mean-expert-official/loopback-sdk-builder
For relatively open APIs, it's not a problem. But when building complex applications with many different roles and when parts of the model have restricted access, there are many places to configure or program access rules. Example: relations to other models can be included (like GraphQL), but if not all roles have access to those relations, it's hard to protect data programmatically. There is no built-in support to protect "tenant"-data from unauthorized access.
There are various sails plugins that come with API generators that populate the needed endpoints, models, and controllers to enable the new plugin features.
Sails is so slow that I've found people claiming that Node.js is worthless because of performance. See for example where Sails.js ranks in the benchmarks here:
https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=plaintext
In the worst case Express.js is almost 300x faster than Sails.js. I know that Sails.js does more, but it comes at such a high cost that I consider it to be worthless. Better to build on a stronger foundation.
Sails.js uses Waterline ORM at its backend which means you can store your data in any datastore that you like; all you have to do is make a change to the Waterline adapter, this will allow you to store your data in MySQL/Redis or any other kind of database.
This could be a huge plus, if you prefer to build your apps using the Model View Controller architecture. Using Sails.js you'll find the task of separating the business logic from the user interface and keeping the interactions between them in a separate layer, extremely easy.
Sails.js is built with a focus on building real time communication apps such as chat or multiplayer games, so naturally it has Socket.io extremely well supported.
Sometimes you might install a plugin that breaks something else, and removing it often leaves the codebase broken. Once something stops working in a Sails project, it's often faster to start from scratch than attempt to debug and repair.
Through services, Feathers provides instant CRUD functionality, it also can easily expose a RESTful and real-time API through HTTP/HTTPS and websockets.