Meteor: Czy warunki wyścigu mogą mieć miejsce z Meteor.collections po stronie serwera?

w moim serwerze / server.js

Meteor.methods({
    saveOnServer: function() {
        var totalCount = Collections.find({
            "some": "condition"
        }).count();
        if (totalCount) {
            var customerId = Collections.update('someId', {
                "$addToSet": {
                    objects: object
                }
            }, function(err) {
                if (err) {
                    throw err;
                } else {
                    return true;
                }
            });
        } else {}
    }
});

Obawiam się, że gdy saveOnServer () zostanie wywołany przez 2 klientów w tym samym czasie, zwróci to samo totalCount dla każdego klienta i w zasadzie zakończy wstawianie tej samej liczby całkowitej do identyfikatora obiektu. Ostatecznym celem jest wstawienie wiersza po stronie serwera za pomocą operacji atomowej, która kończy się tylko wtedy, gdytotalCount został pomyślnie zwrócony i wstawiony dokument zapewnia, że ​​nie istnieje duplikat identyfikatora? Próbuję nie używać mongodb _id, ale mam własną kolumnę id zwiększającą liczbę całkowitą.

Zastanawiam się, jak mogę zapewnić, że pole zostanie automatycznie zwiększone dla każdej operacji wstawiania? Obecnie polegam na uzyskaniu całkowitej liczby dokumentów. Czy możliwa jest tutaj sytuacja rasowa? Jeśli tak, jaki jest sposób radzenia sobie z tym meteorem?

questionAnswers(3)

yourAnswerToTheQuestion