Edit Page

Available database adapters

This page is meant to be an up-to-date, comprehensive list of all of the core adapters available for the Sails.js framework, and a reference of a few of the most robust community adapters out there.

All supported adapters can be configured in roughly the same way: by passing in a Sails/Waterline adapter (adapter), as well as a connection URL (url). For more information on configuring datastores, see sails.config.datastores.

Having trouble connecting? Be sure to check your connection URL for typos. If that doesn't work, review the documentation for your database provider, or get help.

Officially-supported database adapters

#

The following core adapters are maintained, tested, and used by the Sails.js core team.

Want to help out with a core adapter? Get started by reading the Sails project contribution guide.

Database technology Adapter Connection URL structure For production?
MySQL require('sails-mysql') mysql://user:password@host:port/database Yes
PostgreSQL require('sails-postgresql') postgresql://user:password@host:port/database Yes
MongoDB require('sails-mongo') mongodb://user:password@host:port/database Yes
Local disk / memory (built-in, see sails-disk) n/a No!

sails-mysql

#

MySQL is the world's most popular relational database.

NPM package info for sails-mysql   License info

npm install sails-mysql --save
adapter: 'sails-mysql',
url: 'mysql://user:password@host:port/database',
  • The default port for MySQL is 3306.
  • If you plan on saving special characters—like emojis—in your data, you may need to set the charset configuration option for your datastore. To allow emojis, use charset: 'utf8mb4'. You may use the columnType setting in a model attribute to set the character set.
  • For relational database servers like MySQL and PostgreSQL, you may have to create a "database" first using a free tool like SequelPro or in the MySQL REPL on the command-line (if you're an experience SQL user). It's customary to make a database specifically for your app to use.
  • The sails-mysql adapter is also 100% compatible with Amazon Aurora databases.
Handshake inactivity timeout errors
#

If you find yourself encountering a "Handshake inactivity timeout" error when your Sails app interacts with MySQL, you can increase the timeout using the connectTimeout option. This is usually only necessary when queries are running side-by-side with computationally expensive operations (for example, compiling client-side typescript files or running webpack during development).

For example, you might extend the timeout to 20 seconds:

adapter: 'sails-mysql',
url: 'mysql://user:password@host:port/database',
connectTimeout: 20000

sails-postgresql

#

PostgreSQL is a modern relational database with powerful features.

NPM package info for sails-postgresql   License info

npm install sails-postgresql --save
adapter: 'sails-postgresql',
url: 'postgresql://user:password@host:port/database',
  • The default port for PostgreSQL is 5432.
  • In addition to adapter and url, you might also need to set ssl: true. This depends on where your PostgreSQL database server is hosted. For example, ssl: true is required when connecting to Heroku's hosted PostgreSQL service.
  • Note that in pg version 8.0, the syntax was updated to ssl: { rejectUnauthorized: false }.
  • Compatible with most versions of Postgres. See this issue to learn more about compatability with Postgres >12

sails-mongo

#

MongoDB is the leading NoSQL database.

NPM package info for sails-mongo   License info

npm install sails-mongo --save
adapter: 'sails-mongo',
url: 'mongodb://user:password@host:port/database',
  • The default port for MongoDB is 27017.
  • If your Mongo deployment keeps track of its internal credentials in a separate database, then you may need to name that database by tacking on ?authSource=theotherdb to the end of the connection URL.
  • Other Mongo configuration settings provided via querystring in the connection URL are passed through to the underlying Mongo driver.

sails-disk

#

Write to your computer's hard disk, or a mounted network drive. Not suitable for at-scale production deployments, but great for a small project, and essential for developing in environments where you may not always have a database set up. This adapter is bundled with Sails and works out of the box with zero configuration.

You can also operate sails-disk in memory-only mode. See the settings table below for details.

NPM package info for sails-disk   License info

Available out of the box in every Sails app.

Configured as the default database, by default.

Optional datastore settings for sails-disk
#
Setting Description Type Default
dir The directory to place database files in. The adapter creates one file per model. String .tmp/localDiskDb
inMemoryOnly If true, no database files will be written to disk. Instead, all data will be stored in memory (and will be lost when the app stops running). Boolean false
  • You can configure the default sails-disk adapter by adding settings to the default datastore in config/datastores.js.

Community-supported database adapters

#

Is your database not supported by one of the core adapters? Good news! There are many different community database adapters for Sails.js and Waterline available on NPM.

Here are a few highlights:

Database technology Adapter Maintainer Interfaces implemented Stable release
Redis sails-redis Ryan Clough / Solnet Solutions Semantic, Queryable NPM package info for sails-redis
MS SQL Server sails-MSSQLserver misterGF Semantic, Queryable NPM package info for sails-sqlserver
OrientDB sails-orientDB appscot Semantic, Queryable, Associations, Migratable NPM package info for sails-orientdb
Oracle sails-oracleDB atiertant Semantic, Queryable NPM package info for sails-oracledb
Oracle (AnyPresence) waterline-oracle-adapter AnyPresence Semantic, Queryable Release info for AnyPresence/waterline-oracle-adapter
Oracle (stored procedures) sails-oracle-SP Buto and nethoncho Semantic, Queryable NPM package info for sails-oracle-sp
SAP HANA DB sails-HANA Enrico Battistella Semantic, Queryable NPM package info for sails-hana
SAP HANA (AnyPresence) waterline-SAP-HANA-adapter AnyPresence Semantic, Queryable Release info for AnyPresence/waterline-sap-hana-adapter
IBM DB2 sails-DB2 ibuildings Italia & Vincenzo Ferrari Semantic, Queryable NPM package info for sails-db2
ServiceNow SOAP waterline-ServiceNow-SOAP Sungard Availability Services Semantic, Queryable NPM package info for waterline-servicenow-soap
Cassandra sails-cassandra dtoubelis Semantic, Migratable, Iterable NPM package info for sails-cassandra
Solr sails-solr sajov Semantic, Migratable, Queryable NPM package info for sails-solr
FileMaker Database sails-FileMaker Geist Interactive Semantic NPM package info for sails-filemaker
Apache Derby sails-derby dash- Semantic, Queryable, Associations, SQL NPM package info for sails-derby
REST API (Generic) sails-REST zohararad Semantic NPM package info for sails-rest
Add your custom adapter to this list
#

If you see out of date information on this page, or if you want to add an adapter you made, please submit a pull request to this file updating the table of community adapters above.

Note that, to be listed on this page, an adapter must:

  1. Be free and open source (libre and gratis), preferably under the MIT license.
  2. Pass all of the Waterline adapter tests for the interface layers declared in its package.json file.
  3. Support configuration via a connection URL, as url (if applicable).

If you find that any of these conventions are not true for any of the community adapters above (i.e. for latest stable release published on NPM, not for the code on GitHub), then please reach out to the maintainer of the adapter. If you can't reach them or need further assistance, then please get in touch with a member of the Sails core team.

Is something missing?

If you notice something we've missed or could be improved on, please follow this link and submit a pull request to the sails repo. Once we merge it, the changes will be reflected on the website the next time it is deployed.

Concepts