Mongo DB / Mongoose Как правильно клонировать документ, добавив в его ключ версионную «Copy (n)»? - PullRequest
0 голосов
/ 22 сентября 2018

Мне нужно улучшить функцию клонирования в моем приложении.Функция клона дублирует фактический регистр и добавляет к нему текст «Копировать».Давайте рассмотрим пример:

Приложение основано на 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)".

Есть ли способ сделать это без поиска нового документа перед вставкой (что может вызвать много двойных поисков в базе данных)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...