Angularjs mongo/mongoose查询以查找删除空格的字段

Angularjs mongo/mongoose查询以查找删除空格的字段,angularjs,node.js,mongodb,express,mongoose,Angularjs,Node.js,Mongodb,Express,Mongoose,我们是否可以创建一个mongoose查询来返回特定字段数据的结果,而中间没有空格 例如: 系列“KA 04 A”和“KA04A”是相同的。我想在添加新系列时进行检查,如果新系列已经存在于我的mongodb thru mongoose中 当前“我的系列”字段之间有空格 我的猫鼬的当前代码是: seriesModel.find({series_name:req.body.seriesName.toUpperCase(), status:'active'}, function(err, data){

我们是否可以创建一个mongoose查询来返回特定字段数据的结果,而中间没有空格

例如: 系列“KA 04 A”和“KA04A”是相同的。我想在添加新系列时进行检查,如果新系列已经存在于我的mongodb thru mongoose中

当前“我的系列”字段之间有空格 我的猫鼬的当前代码是:

seriesModel.find({series_name:req.body.seriesName.toUpperCase(), status:'active'}, function(err, data){
        if(err){

            logger.info(err);
            return false;
        }
        else if(data.length){

            return res.json({error:true,message:'Series name already exists.'});
        }

如何在没有空间的情况下从db返回字段数据。因此,我可以检查是否存在相同的序列。

理想情况下,在保存记录之前,您可以使用去掉空白的自定义挂钩标准化
series\u name
字段

也就是说,您可以在查询中使用正则表达式。例如,您可以搜索单词“mongoose”的大小写变体,如下所示:

model.findOne({name: /mongoose/i}, fn(){...});
解决问题的一种方法是将字符串拆分为单个字符,然后在所有字符之间插入空格模式
\s
(我假设此字段中没有前导或尾随空格):

(开始
^
和结束
$
是必需的,这样我们就不会在例如“xKA04Ax”上得到误报)

接下来,您需要将此字符串转换为正则表达式格式(
/^K\s*A\s*0\s*4\s*A$/
),并将其插入查询:

model.findOne({name: new RegExp("^K\\s*A\\s*0\\s*4\\s*A$")}, fn(){...});
主要警告:您需要格外小心,确保原始字符串只包含
a-zA-Z0-9
和空格。如果不首先转义那些字符,它就不能包含任何可能被误认为正则表达式模式的内容(有关此方法的更多信息,请参阅)

model.findOne({name: new RegExp("^K\\s*A\\s*0\\s*4\\s*A$")}, fn(){...});