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
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'); }) })
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
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'); })
Généré le SQL est la suivante :
UPDATE `user` SET `age`=`age` + 2,`number`=`number` + 2 WHERE `id` = 1
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'); })
Le SQL généré est le suivant :
UPDATE `user` SET `age`=`age` + -1,`number`=`number` + 2 WHERE `id` = 1
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;
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
User.update({sex:sequelize.literal('`age` +1')}, {where:{number:{$gt:10}}}).then(function(user){ console.log('success'); })L'instruction SQL générée est la suivante suit :
UPDATE `user` SET `age`=`age` +1 WHERE `number` > 10Ré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 !