Как установить значение поля мангуста по умолчанию для количества существующих записей?

Я пытаюсь установить значение по умолчанию для поля в схеме мангуста на количество записей, которые уже существуют в БД.

Первая создаваемая запись будет иметь значение 0 для этого поля, вторая запись должна иметь значение 1 и т. д.

Фон: это должен быть какой-то индекс сортировки, который может быть изменен пользователем, но по умолчанию соответствует порядку создания записей. Таким образом, это должен быть уникальный порядковый номер.

Вот как моя схема мангуста выглядит до сих пор:

const CategorySchema = Schema({
  title: String,
  sorting: { type: Number, index: { unique: true }, default: ##number_of_existing_entries### },
  creationDate: { type: Date, default: Date.now },
});

const Category = mongoose.model('Category', CategorySchema);

Может ли кто-нибудь помочь мне, как добиться желаемого поведения?


person StegSchreck    schedule 03.01.2018    source источник
comment
Вы не можете выполнять такие операции на уровне ORM, как сам Mongoose, но вы можете улучшить эту функцию на уровне JavaScript.   -  person Felix Fong    schedule 03.01.2018
comment
@FelixFong: Конечно, это обходной путь.   -  person StegSchreck    schedule 03.01.2018


Ответы (1)


Я знаю, что это старый вопрос, но если вы нашли его в Google, как я...

Половина решения:

const CategorySchema = Schema({
    title: String,
    sorting: { 
        type: Number, 
        index: { unique: true }, 
        default: function() {
            const collection = this.parent().categories;
            return (collection) ? collection.length : 0;
        }
    },
    creationDate: { type: Date, default: Date.now },
});

const Category = mongoose.model('Category', CategorySchema);

Другая половина — автоматическое получение имени коллекции.

person Yan.Yurkin    schedule 31.10.2018