sql >> Databáze >  >> NoSQL >> MongoDB

Filtrujte podle země a prohledávejte text zdarma mongodb pomocí mongoose

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é.




  1. Jak omezit velikost pole v MongoDB?

  2. Mongodb:Použijte počet záznamů v agregaci po skupině

  3. JSON serializující Mongodb

  4. Mongoid store_in vytváří náhodné výsledky