Мне нужно улучшить функцию клонирования в моем приложении.Функция клона дублирует фактический регистр и добавляет к нему текст «Копировать».Давайте рассмотрим пример:
Приложение основано на MongoDB / Mongoose:
> db.customers.find().pretty();
{
"_id" : ObjectId("5b3a6e74973d5014df9d7d41"),
"name" : "ACME Company",
"code" : "ACME",
"description" : "ACME
"createdAt" : 1530556020029,
"__v" : 0,
"updatedAt" : 1530556028241,
"deletedAt" : null,
}
Для дублирования записи:
let cloneCustomer = async id => {
let customer = await CustomerModel.findById(id);
customer._id = null;
customer.name = customer.name + " - Copy";
customer.save();
}
Моя проблема состоит в том, чтобы определить,новое имя уже существует до его вставки, потому что name
является «уникальным» ключом.Итак, если пользователь клонировал один раз и не изменил имя, я не смог его отозвать.
Я вижу, что приложение объединяет текст "Copy"
как "ACME - Copy - Copy"
или даже "ACME - Copy(2)"
.
Есть ли способ сделать это без поиска нового документа перед вставкой (что может вызвать много двойных поисков в базе данных)?