Page Contents

Overview

LoopBack’s built-in memory connector enables you to test your application without connecting to an actual persistent data source such as a database. Although the memory connector is very well tested it is not suitable for production.

The memory connector supports:

  • Standard query and create, read, update, and delete operations, so you can test models against an in-memory data source.

Limitations

The connector does not implement transactions. Hence, transactions will fail with an error.

Memory connector properties

Property Type Description
name String Name by which you refer to the data source.
connector String Must be "memory" to use the memory connector.
localStorage String Not recommended. Path to the browser Local Storage. This is kept for legacy reasons and may be removed in a future release.
file String

Path to file where the connector will store data, relative to application root directory.

NOTE: The connector will create the file if necessary, but the directory containing the file must exist.

Data persistence

By default, data in the memory connector are transient. When an application using the memory connector exits, all model instances are lost. To maintain data across application restarts, specify a JSON file in which to store the data with the file property when creating the data source.

The simplest way to do this is by editing src/datasources/[datasource name].datasource.ts; for example:

src/datasources/db.datasource.ts

import {inject} from '@loopback/core';
import {juggler} from '@loopback/repository';

const config = {
  name: 'db',
  connector: 'memory',
  localStorage: '',
+ file: './data/db.json',
- file: '',
};

export class DbDataSource extends juggler.DataSource {
  static dataSourceName = 'db';
  static readonly defaultConfig = config;

  constructor(
    @inject('datasources.config.db', {optional: true})
    dsConfig: object = config,
  ) {
    super(dsConfig);
  }
}
Tags: connectors