【发布时间】:2020-12-02 22:59:36
【问题描述】:
由于我在搜索中找不到任何内容,所以我会在这里问一个问题试试运气:
我正在尝试在“客户”集合中创建唯一文档,为了确保它们是唯一的,我搜索了集合中的(唯一!)名称字段以检查是否已经创建了客户。现在我试图排除区分大小写的双打以及空白双打。 (示例客户:“SpaceX”已经存在,所以我不应该创建“Spacex”或“SpaceX”或“Space X”,只是为了确保客户的文档是唯一的)。
所以我要做的是使用$regex 遍历索引名称字段,如果找到,则返回错误。
我发现customer.find({name: {$regex: new RegEx(name), $options: 'ix' }) 在这种情况下不起作用,但根据文档,应该过滤掉该名称的空格修剪和不区分大小写的文档....
这让我疯狂。有谁知道如何解决这个问题?
这是我当前放置检查的代码:
let existingCustomer
try {
console.log(new RegExp(name), typeof name)
existingCustomer = await Customer.find(
{
name: { $regex: new RegExp(name), $options: 'ix' },
},
'-products -tam -responsiblePerson -info -created -updated'
)
console.log(existingCustomer)
} catch (err) {}
if (existingCustomer.length > 0) {
console.log(existingCustomer[0])
const error = new HttpError(
'Customer name already exists, please use a different name.',
500
)
return next(error)
}
【问题讨论】:
标签: javascript regex mongodb mongoose mongodb-query