इस एपीआई को प्रति परिवर्तन के लिए बुलाया जा रहा है। यह एक संख्या या नाम फ़ील्ड हो सकता है। यहां कार्य यह है कि मैं केस-असंवेदनशील रूप से नाम खोजना चाहता हूं।

 router.get('/v1/branch/search/customers/:phoneNumber',authenticate , (req, res) => {
    var regex = "/^"+req.params.phoneNumber+"/", name ="/^"+req.params.phoneNumber+"$/i"; 

    Customer.find({
        subscriberId: req.user.subscriberId,$or:[{$where:regex+'.test(this.phoneNumber)'},{$where:name+'.test(this.name)'},{$where:regex+'.test(this.name)'}],
        _creator : req.user._id
      },{name:1,phoneNumber:1,_id:0}).sort({name: 1}).then((customer) => {
        res.send({'statusCode':0,'data':customer});
      }, (e) => {
        console.log(e);
        res.status(200).send({'statusCode':2,'message':e.message});
      }); 
  });

उपरोक्त कोड केस-असंवेदनशील रूप से केवल कुछ नामों के लिए काम कर रहा है, सभी डेटा के लिए नहीं। मुझे यह नहीं मिल रहा है कि मैं यहाँ क्या गलत कर रहा हूँ।

1
Kavale arun 20 फरवरी 2019, 07:45

1 उत्तर

सबसे बढ़िया उत्तर

आप रेगेक्स क्वेरी का उपयोग कर सकते हैं

{ "name" : { $regex: /Ghost/, $options: 'i' }

इसे अपने कोड में शामिल करने से केस-असंवेदनशीलता की समस्या हल हो जाएगी।

2
Vivek Ghanchi 20 फरवरी 2019, 05:17