Datenbank

Ein Sumor Cloud-Tool.
Weitere Dokumentationen Ein Datenbank-Connector für MySQL, usw. Basierend auf Entität.

CI Test Coverage Audit

Installation

npm i @sumor/database --save

Voraussetzungen

Node.JS-Version

Erfordert Node.JS-Version 18.x oder höher

Erforderliches Node.JS ES-Modul

Da dieses Paket in ES-Modulen geschrieben ist, ändern Sie bitte den folgenden Code in Ihrer package.json-Datei:

{
  "type": "module"
}

Verwendung

Allgemeine Verwendung

import database from '@sumor/database'

const config = {
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'database',
  port: 3306
}

await database.install(config, {
  entity: {
    Car: {
      property: {
        brand: {
          type: 'string',
          length: 100
        },
        model: {
          type: 'string',
          length: 100
        }
      }
    }
  },
  view: {}
})

// Client mit Verbindungspool erhalten
const client = await database.client(config)

// Verbindung erhalten
const db = await client.connect()

// Benutzer festlegen
db.setUser('tester')

// Datensatz erstellen
const car1Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X5'
})
const car2Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X6'
})

// Datensatz lesen
const car = await db.single('Car', { id: carId })
// car = {id: car1Id, brand: 'BMW', model: 'X5'}

// Datensätze abfragen
const cars = await db.query('Car', {
  brand: 'BMW'
})
// cars = [{id: car1Id, brand: 'BMW', model: 'X5'}, {id: car2Id, brand: 'BMW', model: 'X6'}]

// Anzahl an Datensätzen ermitteln
const count = await db.count('Car', {
  brand: 'BMW'
})
// count = 2

// Datensatz aktualisieren
await db.update(
  'Car',
  { id: car1Id },
  {
    brand: 'BMW',
    model: 'X5M'
  }
)

// Datensatz sicherstellen
await db.ensure('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// Der Datensatz wird nicht eingefügt, wenn die Marke 'BMW' bereits vorhanden ist.

// Datensatz ändern
await db.modify('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// Der Datensatz wird aktualisiert, wenn die Marke 'BMW' bereits vorhanden ist.

// Datensatz löschen
await db.delete('Car', { id: car1Id })

// Verbindung schließen
await db.commit()

// Rollback
await db.rollback()

// Verbindung schließen
await db.release()

// Client zerstören, wenn der Server heruntergefahren werden soll
await client.destroy()

Abfrageoptionen

// Datensätze mit Optionen abfragen
const cars = await db.select(
  'Car',
  {
    brand: 'BMW'
  },
  {
    term: 'X5',
    termRange: ['model'],
    top: 10,
    skip: 0
  }
)

Entitätsdefinitionsoptionen

Index

Sie können ein Index-Array zur Entitätsdefinition hinzufügen, um einen Index in der Tabelle zu erstellen. Standardmäßig wird ein Index auf dem Feld id erstellt.

Verknüpfung

Sie können ein Verknüpfungsobjekt zur Entitätsdefinition hinzufügen, um eine Verknüpfung in der Tabelle zu erstellen. Im folgenden Beispiel wird das Feld "userId" in der Car-Entität erstellt.

import database from '@sumor/database'

const config = {
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'database',
  port: 3306
}

await database.install(config, {
  entity: {
    Car: {
      property: {
        brand: {
          type: 'string',
          length: 100
        },
        model: {
          type: 'string',
          length: 100
        }
      },
      index: ['userId'],
      join: {
        user: 'User'
      }
    }
  },
  view: {}
})