MongoDB JSON Проверка не прошла - PullRequest
1 голос
/ 09 марта 2020

Я создал базовую коллекцию c счетчиков с валидатором. Я также поставил метод для его вызова. В методе у меня есть функция findAndModify для обновления последовательности. Когда я вызываю его, он не проходит валидатор, только если я изменяю его уровень на MODERATE. В чем здесь проблема?

Это моя схема валидатора.

db.createCollection('counter', {
   validator: {
     $jsonSchema: {
       bsonType: 'object',
       required: ['sequence_value'],
       properties: {
         sequence_value: {
           bsonType: 'int'
         }
       }
     }
   }
 });

Это функция автообновления.

function getValueForNextSequence(sequenceOfName) {
    var sequenceDoc = db.counter.findAndModify({
        query: { _id: sequenceOfName },
        update: { $inc: { sequence_value: 1 } },
        new: true
    });
    return sequenceDoc.sequence_value;
}

Это команда оболочки, которую я вставил, чтобы вызвать ее.

db.user.insert({
    _id: getValueForNextSequence("user_id"),
    name: "Heggo",
    surname: "Ruffo",
    phone: "5879885858",
    roles: ["Logistic"],
    password: "d1e8a70b5ccab1dc2f56bbf7e99f064a660c08e361a35751b9c483c88943d082"
})

И журнал вывода ...

2020-03-09T13:12:48.559+0300 E QUERY    [js] Error: findAndModifyFailed failed: {
        "ok" : 0,
        "errmsg" : "Document failed validation",
        "code" : 121,
        "codeName" : "DocumentValidationFailure"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DBCollection.prototype.findAndModify@src/mongo/shell/collection.js:736:1
getValueForNextSequence@(shell):2:23
@(shell):1:1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...