MySQL/Postgres/SQLite adapter for JSData

js-data logo

Slack NPM Tests Downloads Coverage

Table of contents


npm install --save js-data js-data-sql

And then you need to install one of:

  • pg
  • sqlite3
  • mysql
  • mysql2
  • mariasql
  • strong-oracle
  • oracle
  • mssql

Quick Start

This example shows how to use js-data-sql with MySQL:

npm install --save js-data js-data-sql mysql

Here's a small sample app:

import express from 'express';
import store from './store';

const app = express();

  .post('/', async function (req, res) {
    res.send(await store.create('post', req.body));
  .get('/:id', async function (req, res) {
    res.send(await store.find('post', req.params.id));
	.put('/:id', async function (req, res) {
    res.send(await store.update('post', req.params.id, req.body));
  .delete('/:id', async function (req, res) {
    res.send(await store.destroy('post', req.params.id));

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
import { SqlAdapter } from 'js-data-sql';

// Create an instance of SqlAdapter
export default const adapter = new SqlAdapter({
  knexOpts: {
    client: 'mysql'
// Use Container instead of DataStore on the server
import { Container } from 'js-data';
import adapter from './adapter';

// Create a store to hold your Mappers
export default const store = new Container();

// Mappers in "store" will use the Sql adapter by default
store.registerAdapter('sql', adapter, { 'default': true });


Configuring the adapter

More configuration details available in the API docs:

SqlAdapter class

import { Container } from 'js-data';
import { SqlAdapter } from 'js-data-sql';
const store = new Container();

const sqlAdapter = new SqlAdapter({
  knexOpts: {
    client: 'mysql',
    connection: {
      host: 'localhost',
      user: 'test',
      password: '123456',
      database: 'foo',
      port: '3306'

store.registerAdapter('sql', sqlAdapter, { 'default': true });

for connecting to another database see knexjs config options

Useful Links


See an issue with this tutorial?

You can open an issue or better yet, suggest edits right on this page.


Need support?

Have a technical question? Post on the JSData Stack Overflow channel.

Want to chat with the community? Hop onto the JSData Slack channel.