У меня есть модель mon go как таковая:
module.exports = (Schema, ObjectId) => {
return new Schema({
objectid: ObjectId,
creator: String,
created: Date,
updated: Date,
script: String,
html: String,
template: Number
});
};
Вместо того, чтобы давать пользователю objectid
или _id
, что долго и трудно запомнить, я дам пользователям template
это числовой идентификатор, такой как: 1, 2, 3, 4 ...
Проблема в том, что, если я делаю этот подход, я должен:
const biggestTemplateRes = await db.templates
.findOne()
.sort({
template: -1
});
if (biggestTemplateRes) {
biggestTemplate = biggestTemplateRes.toObject().template;
}
++biggestTemplate;
console.log({ biggestTemplate });
return db.templates.create({
creator,
created,
updated,
template: biggestTemplate,
...attrs
});
найти самый большой шаблон, а затем создайте больший ... который:
- снижает производительность, добавляя еще один запрос.
- может возникнуть проблема, если самый большой шаблон будет удален, поэтому новый созданный шаблон будет иметь тот же номер шаблона, что и ранее удаленный.
Проблема два выше может быть решена с помощью дополнительной коллекции / модели, которую я могу использовать для поддержания последовательности, но на самом деле это не так решить проблему 1 ...
Можно ли сообщить mon go, что я хочу, чтобы шаблон представлял собой поле числового идентификатора с приращением при создании нового документа?