Angularjs mongo/mongoose查询以查找删除空格的字段
我们是否可以创建一个mongoose查询来返回特定字段数据的结果,而中间没有空格 例如: 系列“KA 04 A”和“KA04A”是相同的。我想在添加新系列时进行检查,如果新系列已经存在于我的mongodb thru 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){
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(){...});