Především doufám, že víte, že k provedení $text
založené na dotazech, musíte mít textový index na tomto konkrétním poli.
Za druhé se zdá, že si pletete zpětná volání a sliby –
Jak vidím váš query()
funkce stále vrací slib, když voláte query()
funkce, od které očekáváte zpětné volání. Sliby se vám okamžitě vrátí a pak je musíte vyřešit.
Váš kód by měl vypadat takto -
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
}
Přečtěte si další informace o Promises zde .
Další drobná chyba, které si mohu všimnout, je v query()
metoda. if statement
nepoužívá složenou závorku a v důsledku toho pouze následující příkaz po if statement
bude spuštěn pod if
doložka. Druhý příkaz za if
se vždy provede -
Takže,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
by mělo být -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Stále si nejsem jistý, že by to všechno dokázalo zprovoznit váš kód, protože zde nevidím celý obrázek. IMHO doporučuji, abyste investovali více času do základů javascriptu a MongoDB. Pomůže vám ušetřit spoustu času. A pokud jde o to oficiální dokumenty MongoDB jsou opravdu dobré.