sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:cursor.toArray returnerar Promise { }

Du får det här felet eftersom find()-metoden är asynkron, det är därför löftet väntar:det hämtas fortfarande.

db.collection('diseases').find({
  'ttl.txt': {
    $regex: data,
    $options: 'i'
  }
}).toArray().then((data) => {
    // Here you can do something with your data
    doSomethingWithTheResult(result)
})

Lägg märke till att du har dina data i en återuppringning. För mer information om löften, kolla Löfte

Beroende på din nodversion (7.6+ tror jag), kan du använda något sånt här

async function getResults() {
    return db.collection('diseases').find({
        'ttl.txt': {
        $regex: data,
        $options: 'i'
        }
    }).toArray();
}

const results = await getResults();

Så din kod med ser ut som en synkron kod. Nyckeln här är async/await-kommandot som väntar på löftesresultaten.

Hoppas det hjälper!



  1. MongoDB och Java-drivrutin:ignorera skiftläge i fråga

  2. hur kontrollerar man om ett fält finns i ett specifikt dokument Mongodb med C#?

  3. MongoDB shards och config-servrar på samma server?

  4. Mongoose - Få lista med _id istället för en rad objekt med _id