Maison > interface Web > js tutoriel > node.js Sequelize implémente l'auto-incrémentation et la décrémentation automatiques d'un champ d'instance unique ou d'un lot

node.js Sequelize implémente l'auto-incrémentation et la décrémentation automatiques d'un champ d'instance unique ou d'un lot

高洛峰
Libérer: 2016-12-28 11:16:18
original
2131 Les gens l'ont consulté

1. Auto-incrémentation et auto-décrémentation d'une instance unique

Dans Sequelize, une instance (Instance) représente une ligne d'enregistrements dans la base de données. Il existe deux types d'instances : les instances non persistantes créées par Model.build() et les instances persistantes créées par des méthodes telles que Model.create(). Qu'il s'agisse d'une instance persistante ou non persistante, il existe deux méthodes, incrément() et décrémentation(), qui sont utilisées respectivement pour incrémenter et décrémenter la valeur du champ.

instance.increment(fields, [options]) - La valeur du champ est incrémentée

instance.decrement(fields, [options]) - La valeur du champ est décrémentée

Par exemple, recherchez l'utilisateur avec l'ID 1 et incrémentez son âge de 1 :

var User = sequelize.import('../lib/model/user/user');
User.findById(1).then(function(user){
 user.increment('age').then(function(user){
 console.log('success');
 })
})
Copier après la connexion

L'instruction SQL générée par la méthode incrément() est la suivante :

UPDATE `user` SET `age`=`age` + 1 WHERE `id` = 1
Copier après la connexion

Les valeurs d'auto-incrémentation et d'auto-décrémentation par défaut d'incrément() et decrément() sont 1. Si vous souhaitez utiliser d'autres valeurs, vous pouvez le spécifier via le paramètre by dans le paramètre options [options].

Par exemple, réduire de 2 les champs numéro et âge de l'utilisateur peut être réalisé de la manière suivante :

user.increment(['age', 'number'], {by:2}).then(function(user){
 console.log('success');
})
Copier après la connexion

Généré le SQL est la suivante :

UPDATE `user` SET `age`=`age` + 2,`number`=`number` + 2 WHERE `id` = 1
Copier après la connexion

Les paramètres des champs peuvent également être transmis via des objets et spécifier des valeurs d'auto-incrémentation et d'auto-décrémentation. Dans ce cas, le paramètre options.by est ignoré.

Par exemple, augmentez le numéro de l'utilisateur de 2 et diminuez son âge de 1 :

user.increment({age:-1, number:2}, {by:5}).then(function(user){
 console.log('success');
})
Copier après la connexion

Le SQL généré est le suivant :

UPDATE `user` SET `age`=`age` + -1,`number`=`number` + 2 WHERE `id` = 1
Copier après la connexion

2. L'incrémentation et la décrémentation automatiques par lots

increment() et decrement() s'effectuent toutes deux automatiquement. -incrémenter ou décrémenter pour une seule instance Il s'agit d'une opération de décrémentation, ce qui signifie que les données de l'opération sont une ligne de données dans la base de données. Pour implémenter des opérations d'incrémentation et de décrémentation automatiques par lots telles que les suivantes, vous ne pouvez pas utiliser les opérations d'instance :

UPDATE `user` SET `age`=`age` + 1 WHERE `number` > 10;
Copier après la connexion

Dans Sequelize, les opérations d'indexation sont généralement effectuées à travers des modèles (Modèle) à réaliser. Cependant, Model n'a pas de méthodes Increase() et Decrement(), il ne peut donc pas être incrémenté ou décrémenté aussi facilement qu'Instance.

À l'heure actuelle, nous pouvons l'implémenter via Model.update() et la méthode de niveau supérieur sequelize.literal() dans sequelize :

sequelize.literal(val) - Créer un littéral object< La méthode 🎜>

sequelize.literal() est utilisée pour créer un objet littéral, qui (val) sera transmis directement dans l'instruction SQL générée sans aucun échappement.

Par exemple, augmentez de 1 l'âge des utilisateurs dont le nombre est supérieur à 10 :

User.update({sex:sequelize.literal(&#39;`age` +1&#39;)}, {where:{number:{$gt:10}}}).then(function(user){
 console.log(&#39;success&#39;);
})
Copier après la connexion

L'instruction SQL générée est la suivante suit :

UPDATE `user` SET `age`=`age` +1 WHERE `number` > 10
Copier après la connexion

Résumé

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra en apporter. aide aux études ou au travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer.

Pour plus d'informations sur l'implémentation de node.js Sequelize de champs d'instance unique ou d'articles liés à l'auto-incrémentation et à la décrémentation automatique par lots, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal