Hannan Rhodes
Hannan Rhodes

Reputation: 89

Mongodb find() return undefined

When ever I try to just use a simple find() for my mongodb it returns undefined.

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/local';

MongoClient.connect(url, function (err, db) {

    db.collection('pokemon').find({ $search: { $text: 'Pikachu' } }).toArray(function(err, data){ console.log(data) })

});

EDIT:

Turns out I never created an index by putting

db.collection('pokemon').createIndex({Name: 'text'})

before all the code.

Upvotes: 1

Views: 1851

Answers (1)

rsp
rsp

Reputation: 111258

First of all, every time where you have:

function(err, data){ console.log(data) }

you should check errors:

function (err, data) {
  if (err) {
    console.log('Error:', err);
  } else {
    console.log('Data:', data);
  }
}

Then you will probably see what's going on.

This is also true for the database connection itself - instead of:

MongoClient.connect(url, function (err, db) {
  // use db here
});

you should handle errors:

MongoClient.connect(url, function (err, db) {
  if (err) {
    // handle errors
  } else {
    // use db here
  }
});

If you don't handle errors then don't be surprised that you don't know why you don't get values.

Upvotes: 4

Related Questions