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.