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.
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.
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 :
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.
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.
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.
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); } }); });
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); } }); } });
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();
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!