首页 > 解决方案 > Node js - 如果记录已经存在,则添加序号后缀

问题描述

正如您在下面看到的,我有一个查询来检查文件名是否已经存在并添加一个时间戳以使其唯一,现在时间戳太长,我想使用序数后缀而不是时间戳。每次找到现有文件时,我们如何添加原始后缀?

像 hellofilename-1st , hellofileaname-2nd 之类的东西。ETC

顺便说一句,文件名是数据库中的列。

#代码

// check if filename already exists
  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]}`;
  }

#代码 2

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";
}

标签: javascriptnode.jstypescript

解决方案


您需要尝试使用正则表达式计算所有文档,然后如果 count !== 0,则添加具有名称的文档

`hellofilename-${ordinal_suffix_of(count)}`

我不确定您使用的是哪个数据库,如果是 MongoDB,那么您可以在查询中使用 $regex:https ://docs.mongodb.com/manual/reference/operator/query/regex/

和方法计数:https ://docs.mongodb.com/manual/reference/method/db.collection.count/


推荐阅读