javascript - 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";
}
解决方案
您需要尝试使用正则表达式计算所有文档,然后如果 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/
推荐阅读
- xml - 读取XML文件中提到的垃圾值如何报错?
- sql - Sql Query 转换为打开 qnt 的 sql 表。购买 qnt,并关闭 qnt
- javascript - jQuery 每个方法都不会选择附加的 HTML
- web-services - 如何使用 Power Automate / MS Flow 调用 SOAP Web 服务
- python - 仅使用月份和日期绘制数据
- python - 在 Python 中循环遍历不同数据集的行和列
- python-3.x - 检查很多 settings.ini 选项?
- python - 编写 python 代码来寻找完美的根
- python - 为什么 pycharm 在运行 pytest 时会错过这个覆盖率?
- directory - G Suite Admin SDK Groups API 订阅是否发生了变化或类似的增量 API?