Créer ou mettre à Jour Sequelize
Je suis en utilisant Sequelize dans mon projet Nodejs et j'ai trouvé un problème que je vais avoir un moment difficile à résoudre.
Fondamentalement, j'ai un cron qui obtient un tableau d'objets à partir d'un serveur que l'insère sur ma base de données comme un objet ( dans ce cas, les dessins animés ). Mais si j'en ai déjà un de ces objets, je dois le mettre à jour.
Fondamentalement, j'ai un tableau d'objets et pourrait utiliser la BulkCreate() la méthode. Mais comme le Cron commence à nouveau, il n'a pas le résoudre j'étais donc besoin d'une sorte de mise à jour avec un upsert vrai drapeau. Et le principal problème: je dois avoir un rappel que les incendies, juste une fois, après toutes ces crée ou met à jour. Quelqu'un aurait-il une idée de comment je peux faire cela? Itérer sur un tableau d'objet.. la création ou de la mise à jour et ensuite obtenir un seul rappel après?
Merci pour l'attention
Vous devez vous connecter pour publier un commentaire.
De la docs, vous n'avez pas besoin d'interroger
where
pour effectuer la mise à jour une fois que vous avez l'objet. Aussi, l'utilisation de la promesse de simplifier les rappels:Mise en œuvre
Utilisation
Note
ce qui signifie qu'il est conseillé de re-penser l'approche et probablement juste de mettre à jour les valeurs dans un réseau d'appel et soit:
Vous pouvez utiliser upsert
C'est bien plus simple.
Mise à jour 07/2019 maintenant avec async/await
J'ai aimé l'idée de Ataik, mais c'est un peu plus courte:
Utilisation:
Facultatif: ajoutez ici la gestion des erreurs, mais je recommande fortement de la chaîne de toutes les promesses d'une demande et d'avoir un gestionnaire d'erreur à la fin.
Cela pourrait être une vieille question, mais c'est ce que j'ai fait:
Son aime vous souhaitez envelopper votre Sequelize les appels à l'intérieur d'un async.chaque.
Cela peut être fait avec l'événement personnalisé de l'émetteur.
En supposant que vos données dans une variable appelée de données.
vous pouvez utiliser
findOrCreate
et puisupdate
méthodes de sequelize. voici un exemple avec async.jsVoici un exemple simple qui soit mises à jour deviceID -> pushToken de la cartographie ou de la crée: