base de données

Un outil Sumor Cloud.
Plus de documentation Un connecteur de base de données pour MySQL, etc. Basé sur l'entité.

CI Test Couverture Audit

Installation

npm i @sumor/database --save

Prérequis

Version Node.JS

Nécessite Node.JS version 18.x ou supérieure

Requiert le module ES Node.JS

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json :

{
  "type": "module"
}

Utilisation

Utilisation Générale

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: {}
})

// obtenir le client avec un pool de connexions
const client = await database.client(config)

// obtenir la connexion
const db = await client.connect()

// paramétrer l'utilisateur opérateur
db.setUser('testeur')

// créer un enregistrement
const car1Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X5'
})
const car2Id = await db.insert('Car', {
  brand: 'BMW',
  model: 'X6'
})

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

// interroger les enregistrements
const cars = await db.query('Car', {
  brand: 'BMW'
})
// cars = [{id: car1Id, brand: 'BMW', model: 'X5'}, {id: car2Id, brand: 'BMW', model: 'X6'}]

// compter les enregistrements
const count = await db.count('Car', {
  brand: 'BMW'
})
// count = 2

// mettre à jour l'enregistrement
await db.update(
  'Car',
  { id: car1Id },
  {
    brand: 'BMW',
    model: 'X5M'
  }
)

// assurer l'enregistrement
await db.ensure('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// n'insertera pas l'enregistrement si la marque 'BMW' existe déjà

// modifier l'enregistrement
await db.modify('Car', ['brand'], {
  brand: 'BMW',
  model: 'X5C'
})
// mettra à jour le modèle de l'enregistrement si la marque 'BMW' existe déjà

// supprimer l'enregistrement
await db.delete('Car', { id: car1Id })

// fermer la connexion
await db.commit()

// annuler
await db.rollback()

// fermer la connexion
await db.release()

// détruire le client lorsque le serveur doit être arrêté
await client.destroy()

Options de Requête

// interroger les enregistrements avec des options
const cars = await db.select(
  'Car',
  {
    brand: 'BMW'
  },
  {
    term: 'X5',
    termRange: ['model'],
    top: 10,
    skip: 0
  }
)

Options de Définition de l'Entité

Index

Vous pouvez ajouter un tableau d'index à la définition de l'entité pour créer des index sur la table, par défaut, il créera un index sur le champ id.

Jointure

Vous pouvez ajouter un objet de jointure à la définition de l'entité pour créer une jointure sur la table. Comme dans l'exemple ci-dessous, il créera un champ userId dans l'entité Car.

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: {}
})