sql >> Database >  >> NoSQL >> MongoDB

Filter op land en zoek naar vrije tekst mongodb met behulp van mangoest

Allereerst hoop ik dat je dat weet om $text uit te voeren gebaseerde zoekopdrachten hebt u een tekstgebaseerde index op dat specifieke veld.

Ten tweede lijk je terugbellen en beloften door elkaar te halen -

Zoals ik je query() kan zien functie retourneert nog steeds een belofte wanneer u de query() . aanroept functie waarvoor u de terugroepactie verwacht. Beloftes worden direct aan je teruggegeven en dan moet je ze oplossen.

Uw code zou er als volgt uit moeten zien -

dbHelper.query(mongoose.model('events'), {$text: {$search: "Ade"},'place.location.country': "Australia"})
.then(function(result)){
    // you have your data here
}
.catch(function(err)){
    // an error occured
}

Lees meer over Beloften hier .

Een andere kleine bug die ik kan opmerken zit in de query() methode. Het if statement maakt geen gebruik van accolades en dientengevolge alleen het volgende statement na het if statement wordt uitgevoerd onder de if clausule. De tweede instructie na de if wordt altijd uitgevoerd -

Dus,

if(error)
    console.log(error);
// always executed
reject(error);
resolve(data);

zou moeten zijn -

if(error){
    console.log(error);
    reject(error);
}
resolve(data);

Ik weet nog steeds niet zeker of al deze je code zouden kunnen laten werken, omdat ik hier niet het hele plaatje kan zien. Ik raad IMHO aan dat je wat meer tijd investeert in de basis van javascript en MongoDB. Zal u helpen veel tijd te besparen. En trouwens MongoDB's officiële documenten zijn echt goed.




  1. 3 manieren om een ​​waarde uit een array in MongoDB te verwijderen

  2. php_ini niet ingesteld op php.ini-locatie

  3. Een prestatie-spiekbriefje voor MongoDB

  4. Mongodb-berekeningsquery - cumulatieve vermenigvuldiging