Insertions qui ne se font pas

Le problème exposé dans ce sujet a été résolu.

Bonjour :)

Je veux insérer un nouveau document si il n'en existe pas encore pour un mot, et ne rien faire si il y en a déjà un. Je ne suis pas certains que ce soit la solution optimale :

1
2
collection.update({mot: motInLower}, {mot: motInLower}, {upsert: true});
//motInLower contient le mot à insérer

Cette ligne s’exécute à chaque itération d'une boucle (pour chaque mots d'une phrase), cependant je n'ai qu'une insertion dans ma collection : la première itération (le premier mot). motInLower change bien à chaque itération.

Auriez vous une idée du pourquoi du comment ?

+0 -0

bien sur :

1
2
3
4
5
6
7
8
9
db.collection('mots', function(err, collection) {
    var listedesmots = listeMots(chaine);
    listedesmots.forEach(function(value, index, array) {
        var caracteristiques = extraireCaracteristiques(value, index, listedesmots);
        print(value+" : "+util.inspect(caracteristiques));
        var motInLower = value.toLowerCase();
        collection.update({mot: motInLower}, {mot: motInLower}, {upsert: true});
    });
});

Les print se font bien dans la console

+0 -0

ça c'est pour une seule itération :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Quel : [ nombreDeLettres: 4,
  positionDansLaPhrase: 0,
  syllabes: [ 'Quel' ],
  nombresDeSyllabes: 1,
  voyelles: [ 'u', index: 1, input: 'Quel' ],
  nombreDeVoyelles: 1,
  pourcentageDeVoyelles: 0.25,
  premiereLettreEnMajuscule: true,
  ilYaUnMotAvant: false,
  motApres: 'temps',
  ilYaUnMotApres: true ]

j'ai trouvé :)

juste après ma boucle j'avais mis un

1
process.exit();

et du coup les requètes n'étaient pas terminée lorsque que le programme quittait.

C'est toi qui m'a mis sur la voie :

1
debug(util.inspect(db.collection("mots").update({mot: motInLower},{ $set: {mot: motInLower}}, {upsert: true})));

ça me retourne :

1
Promise { <pending> }

du coup j'ai tilté. Merci firm1 !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte