сделать запись уникальной, увеличив число в javascript - PullRequest
0 голосов
/ 01 августа 2020

Я хотел увеличить число до имени файла, если имя файла уже существует в базе данных (также на основе записей). например, если я добавлю файл с именем файла DO C, он проверит, существует ли DO C, поскольку DO C существует в приведенном ниже примере, а последнее приращение равно 1 (DO C -1), тогда имя файла будет ДО C -2. Если я снова добавлю DO C, и последнее приращение будет равно 2, то новое имя файла будет DO C -3.so и т. Д. Есть идеи, ребята? спасибо.

Похоже, я хочу всегда создавать новое имя файла (добавляя приращение или число к имени файла), а также потенциально в .future найти несколько имен файлов, которые являются обновлениями одних и тех же данных.

# Код для поиска, если запись существует (работает нормально)

const file = await context.service.Model.findOne({
    where: { employeeId: record.id, filename: data.filename },
    paranoid: false,
  });

# код, изменяющий имя файла (текущая реализация usi

     if (file) {
//this is where we add number to filename
        filename = getNumberedFileName(data.filename)
      }

# код для добавления числа в имя файла

function getNumberedFileName(fileN) {
    //These are value initializations to cope with the situation when the file does not have a .
    var fileName = fileN;
    var fileExtension = "";
    var lastDotIndex = fileN.lastIndexOf(".");
    if ((lastDotIndex > 0) && (lastDotIndex < fileN.length - 1)) { //We are not interested in file extensions for files without an extension hidden in UNIX systems, like .gitignore and we are not interested in file extensions if the file ends with a dot
        fileName = fileN.substring(0, lastDotIndex);
        fileExtension = "." + fileN.substring(lastDotIndex + 1);
    }
    var lastDashIndex = fileName.lastIndexOf("-");
    if ((lastDashIndex > 0) && (lastDashIndex < fileName.length - 1)) {
        var lastPart = fileName.substring(lastDashIndex + 1);
        if (!isNaN(lastPart)) {
            var index = parseInt(lastPart) + 1;
            return fileName.substring(0, lastDashIndex) + "-" + index + fileExtension;
        }
    }
    return fileName + "-1" + fileExtension;
}

ЗАПИСЬ БАЗЫ ДАННЫХ

1 Ответ

0 голосов
/ 01 августа 2020

# suggetion

Ваш лог c может нарушить ACID правила, на мой взгляд, вы можете попробовать добавить столбец numberOfFiles и использовать запрос update sql, например update set numberOfFiles = numberOfFiles + 1 where yourTable

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