MeteorJS не может обновить счетчик в документе

#methods #meteor #mongodb-query

#методы #метеор #mongodb-запрос

Вопрос:

Это моя функция, и она не обновляет счетчик в документе коллекции NumStat.

 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
    }
}
});
  

если я сделаю что-то вроде:
NumStat.update({num: 2},{$inc: {count: 1}});
Это работает отлично, но не похоже на пример, который я указал !? Что не так с этим методом и как я могу прийти к желаемому результату? Увеличение количества документов NumStat поиск документа по массиву [item]

Решение: это было моей ошибкой, потому что значение в массиве было строкой, а значение num в базе данных было int . Решением было использование parseInt(array[i]) . Лучшим решением будет использование findAndModify, как упоминал @Dewfy.

Ответ №1:

Я вообще не знаю реализацию JavaScript для Mongo, но:

  1. update для другого диалекта (Java или C #) не создает запись, а обновляет существующую, поэтому просмотрите использование save
  2. В Mongo существует концепция «проблемы записи«, которая может задержать реальную запись. Убедитесь, что вы имеете дело с подтвержденным.

ps. Вместо использования цикла findAndModify с указанием массива идентификаторов для изменения — тогда вы могли бы избежать цикла и поместить логику модификации на сторону сервера

Комментарии:

1. Большое вам спасибо за функцию fundandmdof, я собираюсь ее использовать. Что касается массива [i], то я был виноват, что элемент массива был string, а значение num в базе данных было int