Добавление суффикса порядкового номера к имени, чтобы сделать запись уникальной - PullRequest
1 голос
/ 01 августа 2020

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

Но вместо использования метки времени я хочу использовать порядковый суффикс. Как реализовать или добавить порядковый суффикс к имени файла? Например, в базе данных есть файл с именем HELLOWORLD. Затем я снова добавляю файл с именем HELLOWORLD, поскольку он уже существует, новое имя файла теперь будет HELLOWORLD-1st. Если я снова добавлю файл с именем HELLOWORLD, он проверит наличие обновлений файла, а последним будет HELLOWORLD-1st, поэтому теперь новое имя файла будет HELLOWORLD-2nd, поскольку HELLOWORLD и HELLOWORLD-1st уже существуют. есть идеи, как мы можем реализовать что-то подобное? Спасибо.

# Код для проверки существования записи

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

if (file) {
    const prefix = Date.now().toString();
    // eslint-disable-next-line no-undef
    const fileParts = data.filename.split('.');
    filename = `${fileParts[0]}-${prefix}.${fileParts[1]}`;
  }

# функция порядкового суффикса

function ordinal_suffix_of(i) {
    var j = i % 10,
        k = i % 100;
    if (j == 1 && k != 11) {
        return i + "st";
    }
    if (j == 2 && k != 12) {
        return i + "nd";
    }
    if (j == 3 && k != 13) {
        return i + "rd";
    }
    return i + "th";
}

1 Ответ

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

Вы можете многократно l oop, пока не найдете filename, которого нет в БД:

let basename = filename = data.filename
let suffix = 0

while (true) {
  const file = await context.service.Model.findOne({
    where: { humanId: record.id, filename: filename },
    paranoid: false,
  })

  if ( ! file ) {
    break; // filename does not exist in DB, so exit loop
  }

  let ordinal_suffix = ordinal_suffix_of( ++suffix )
  filename = `${basename}-${ordinal_suffix}`
}

// filename is now guaranteed to be unique

Если filename существует в БД, он добавляет желаемый порядковый суффикс (1-й, 2-й, 3-й и т. Д. c.) И продолжает поиск, пока не найдет в БД файл с таким именем.

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