2014-06-16 7 views
0

Ceci est ma fonction et il ne met pas à jour le nombre sur le document de collection NumStat.MeteorJS ne peut pas mettre à jour compte sur document

Meteor.methods({ 
addDocument: function(array){ 
    object = { 
     numbers : array, 
     date : new Date() 
    } 
    NumArray.insert(object); 

    for (var i = 0; i < array.length; i++) { 
     NumStat.update({num : array[i]},{$inc : {count : 1}}); 
     console.log(NumStat.findOne({num : array[i]})); // this throws undefined 
    } 
} 
}); 

si je fais quelque chose comme: NumStat.update ({num: 2}, {$ inc: {count: 1}}); Cela fonctionne parfaitement, mais pas quelque chose comme l'exemple que j'ai fait signe! Quel est le problème avec cette méthode et comment puis-je arriver au résultat que je veux? Augmenter le nombre sur les documents NumStat trouver le document par tableau [élément]

Solution: C'était ma mauvaise parce que la valeur sur le tableau était une chaîne et la valeur num sur la base de données était un int. La solution utilisait parseInt (array [i]). Une meilleure solution utilisera findAndModify comme @Dewfy mentionné.

Répondre

1

Je ne sais pas la mise en œuvre JavaScript pour Mongo du tout, mais:

  1. update pour d'autres dialectes (Java ou C#) ne crée pas de disque, mais mettre à jour existante, afin de revoir l'utilisation save
  2. Dans Mongo, il existe une conception de 'write concern' qui peut retarder l'écriture réelle. Assurez-vous de traiter avec accusé de réception.

p.s. Au lieu de l'utilisation de la boucle findAndModify avec spécification tableau d'ID à modifier - alors vous pouvez éviter la logique de modification de boucle et de lieu au côté serveur

+0

Merci beaucoup pour la fonction fundAndMdofiy je vais l'utiliser. Comme pour le tableau [i] c'était mon mauvais l'élément du tableau était une chaîne et la valeur num sur la base de données était un int –

Questions connexes