Maison >interface Web >js tutoriel >QueryBuilder en action, partie 1

QueryBuilder en action, partie 1

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 08:41:10577parcourir

QueryBuilder in Action Part 1

Lors de la création d'applications avec Node.js en général ou Total.js en particulier, l'interrogation et la gestion efficaces des données sont essentielles. Dans ce blog, nous expliquerons comment effectuer des opérations de base sur les données à l'aide de Total.js QueryBuilder. Cette première partie présentera les concepts fondamentaux, démontrera les actions de base telles que l'insertion et la récupération de données, et présentera des exemples pratiques pour vous aider à démarrer.

Premiers pas : Explorer QueryBuilder dans Total.js

QueryBuilder de Total.js offre une couche d'abstraction puissante pour interagir avec diverses bases de données via des opérations telles que le filtrage, l'insertion, la mise à jour et la récupération de données. Que vous travailliez sur une application légère ou que vous gériez des requêtes complexes, QueryBuilder fournit une solution ORM simple mais flexible pour les applications Node.js.

Prise en charge et implémentations de bases de données

QueryBuilder agit comme une couche intermédiaire, faisant abstraction des spécificités des moteurs de base de données. Pour l'utiliser efficacement, vous devrez intégrer une implémentation existante ou créer la vôtre qui répond à vos besoins. Total.js prend en charge plusieurs moteurs de base de données, garantissant une flexibilité pour différents cas d'utilisation.

Voici les implémentations actuellement disponibles :

  • Base de données intégrée NoSQL (TextDB) : Il s'agit d'une base de données légère basée sur des fichiers incluse dans le noyau Total.js, parfaite pour les petites applications ou le prototypage.
  • PostgreSQL : Utilisez QueryBuilder avec l'une des bases de données relationnelles les plus robustes et les plus riches en fonctionnalités.
  • MySQL : Intégrez cette base de données largement utilisée pour des solutions évolutives et performantes.
  • SQLite : Tirez parti de QueryBuilder avec cette base de données légère et sans serveur pour des déploiements rapides ou des applications intégrées.

Configuration de QueryBuilder

Dans ce guide, nous commencerons par une base de données NoSQL (TextDB) intégrée pour montrer comment définir des schémas et effectuer des actions de base telles que l'interrogation, l'insertion et la mise à jour de données. À la fin, vous aurez les compétences nécessaires pour adapter ces opérations à d’autres moteurs de bases de données pris en charge.

Configuration de la base de données

Pour apprendre efficacement, nous allons créer un fichier de base de données NoSQL de test avec des exemples de données utilisateur.

Configuration de la base de données : créez un fichier bases de données/users.nosql pour stocker des exemples d'enregistrements d'utilisateurs :

{"id": 2, "name": "Bob", "age": 30}
{"id": 3, "name": "Charlie", "age": 28}
{"id": 4, "name": "Diana", "age": 22}
{"id": 5, "name": "Edward", "age": 35}
{"id": 6, "name": "John", "age": 45}
{"id": 7, "name": "Fiona", "age": 27}
{"id": 8, "name": "George", "age": 29}
{"id": 9, "name": "Hannah", "age": 24}
{"id": 10, "name": "Isaac", "age": 31}
{"id": 11, "name": "Julia", "age": 26}

Bon à savoir : Vous n'avez pas besoin de créer manuellement le fichier .nosql dans le dossier bases de données. Le framework est capable de le créer lors de l’opération d’insertion s’il n’existe pas. Mais le contenu du fichier .nosql est en texte brut et il est important de comprendre sa structure. Peut-être que cela sera utile pour régler certains cas.

Définition du schéma : Créez un schéma avec des actions dans schemas/users.js. Nous définirons des actions pour répertorier, récupérer et insérer des utilisateurs.

Actions de base de QueryBuilder avec des exemples pratiques

Dans schemas/users.js, nous définirons des actions pour lister et insérer des utilisateurs. Ce schéma utilise les méthodes QueryBuilder pour filtrer les données, récupérer des enregistrements spécifiques et ajouter de nouveaux utilisateurs à la base de données.

1. Liste des utilisateurs avec des filtres
Nous commençons par définir une action de liste pour récupérer les utilisateurs en fonction de critères comme le nom ou l'âge.

{"id": 2, "name": "Bob", "age": 30}
{"id": 3, "name": "Charlie", "age": 28}
{"id": 4, "name": "Diana", "age": 22}
{"id": 5, "name": "Edward", "age": 35}
{"id": 6, "name": "John", "age": 45}
{"id": 7, "name": "Fiona", "age": 27}
{"id": 8, "name": "George", "age": 29}
{"id": 9, "name": "Hannah", "age": 24}
{"id": 10, "name": "Isaac", "age": 31}
{"id": 11, "name": "Julia", "age": 26}

Exemples d'utilisation :

Voici quelques variantes de l'utilisation de la liste pour filtrer les utilisateurs.

  • Filtrer par nom :
NEWSCHEMA('Users', function(schema) {

    schema.action('list', {
        name: 'List users',
        query: 'page:Number, sort:String, name:String',
        params: 'id:String',
        action: async function($) {
            // Example: filter by name
            var users = await DATA.find('nosql/users').where('name', $.query.name).promise();
            $.callback(users); 
        }
    });
});
  • Récupérer le premier utilisateur uniquement :
var users = await ACTION('Users/list').where('name', 'John').promise();
console.log(users);

2. Récupérer un utilisateur par ID
Une autre fonctionnalité utile consiste à récupérer un utilisateur par son identifiant. L'utilisation de la méthode .id() de QueryBuilder simplifie les choses :

var user = await DATA.find('nosql/users').first().promise();
console.log(user);

Exemple d'utilisation :

var builder = DATA.find('nosql/users');
builder.id($.params.id);
// or builder.where('id', $.params.id);
$.callback(await builder.promise());

3. Insérer un nouvel utilisateur
Ensuite, définissons une action d'insertion pour ajouter de nouveaux utilisateurs à la base de données.

var user = await ACTION('Users/list').params({ id: 5 }).promise();
console.log(user);  // Retrieves user with id 5

Cette action ajoute un utilisateur à bases de données/users.nosql. Voici comment appeler l’action d’insertion.

Exemple d'utilisation :

schema.action('insert', {
    name: 'Inserting new users',
    input: '*name:String, age:Number',
    output: 'success:Boolean',
    action: function($, model) {
        DATA.insert('nosql/users', model).callback(function(err) {
            if (err) {
                console.error(err);
            } else {
                $.success(true);
            }
        });
    }
});

Cas d'utilisation pratiques : QueryBuilder en action

1. Récupérer les utilisateurs par nom filtré

// in `definitions/test.js`
ON('ready', function() {
  var result = await ACTION('Users/insert', { name: 'Alice', age: 25 }).promise();
    console.log(result);
});

2. Récupérer l'utilisateur par ID

async function getUsersByName() {
    var users = await ACTION('Users/list').query({ name: 'Hannah' }).promise();
    console.log(users);
}
getUsersByName();

3. Insérer un nouvel utilisateur et récupérer la liste mise à jour

async function getUserByID() {
    var user = await ACTION('Users/list').params({ id: 4 }).promise();
    console.log(user);
}
getUserByID();

Conclusion

Dans cette première partie de QueryBuilder in Action, nous avons couvert l'essentiel : créer une base de données NoSQL de base, définir des actions de schéma et utiliser les méthodes QueryBuilder pour répertorier, filtrer, récupérer et insérer des utilisateurs. Nous avons exploré des exemples de code pratiques pour chaque opération afin de vous aider à comprendre comment ces concepts fonctionnent dans un scénario réel.
Dans la partie suivante, nous aborderons les méthodes QueryBuilder plus avancées et le filtrage complexe pour vous offrir une boîte à outils complète pour gérer efficacement les données dans Total.js.
Restez à l'écoute de QueryBuilder in Action Part 2, où nous approfondirons les techniques de requête avancées pour dynamiser vos applications Total.js !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn