Insertions qui ne se font pas

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 ?

Édité par Drulac

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Auteur du sujet

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

Édité par Drulac

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Auteur du sujet

Les résultats de

1
print(value+" : "+util.inspect(caracteristiques));

? Si oui, bien sur je peut les fournir

Non je n'ai aucunes erreurs, mais je n'ai rien activé dans ce sens, je vais regarder ça.

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Auteur du sujet

ç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 ]

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Auteur du sujet

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 !

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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