Skip to content

Latest commit

 

History

History
94 lines (70 loc) · 2.67 KB

File metadata and controls

94 lines (70 loc) · 2.67 KB
lang en
title Executing database commands
keywords LoopBack 4.0, LoopBack 4, Node.js, TypeScript
sidebar lb4_sidebar
permalink /doc/en/lb4/Executing-database-commands.html

Overview

{% include warning.html content="In general, it is always better to perform database actions through Repository methods. Directly executing native database commands may lead to unexpected results and other issues." %}

When you project outgrows built-in Repository methods, you can execute native database commands to implement more complex data queries and manipulations, for example execute a custom SQL query or invoke a MongoDB command.

LoopBack provides two APIs:

  • DataSource-level execute() method
  • Repository-level execute() method

Both methods offer the same set of signatures, the implementation in Repository is just a thin wrapper delegating the task to DataSource.

Example use:

const result = await repository.execute('SELECT * FROM Products');

Examples

MySQL

Use parameterized queries to avoid SQL injection attacks.

const result = await repository.execute('SELECT * FROM Products WHERE id = ?', [
  productId,
]);

PostgreSQL

const result = await repository.execute(
  'SELECT * FROM Products WHERE id = $1',
  [productId],
);

MongoDB

const result = await repository.execute('MyCollection', 'aggregate', [
  {$unwind: '$data'},
  {$out: 'tempData'},
]);

Use parameterized queries whenever possible instead of constructing SQL strings manually.

See API docs for parameter reference, additional information and examples:

{% include important.html content="Each connector implements a slightly different flavor of execute() to match the capabilities supported by the database engine. Please refer to connector documentation to learn more about the expected parameters and command/query syntax to use. " %}

Supported connectors

Not all connectors support execution of native database commands. Check your connector's documentation to learn more. The following connectors are known to support execute method.