相关文章推荐
讲道义的砖头  ·  MongoDB ...·  1 周前    · 
逼格高的蛋挞  ·  Using DBRefs :: ...·  1 周前    · 
有情有义的枇杷  ·  org.springframework.da ...·  4 天前    · 
坚强的遥控器  ·  vba ...·  2 月前    · 
闷骚的西红柿  ·  vue.js - ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I am querying something that I have done multiple times. Take a look, I can't seem to understand.

/* GET all things */
app.get('/things', function(req, res) {
    var search = req.query.search;
    console.log(search); //works properly and prints strings
    Thing.find({ name: {$regex : search}}, function(err, val) {
        if(err) throw error;
        console.log(val); // returns some horrible JSON
        res.send(JSON.stringify(val)); // Throws TypeError

I thought maybe my query was wrong and that perhaps maybe it's the Mongo shell throwing issues, but when I went into the Mongo shell.

use dbname

> db.booking.find({name: {$regex: "G"}})

>{ "_id" : ObjectId("58238283565e2c1940b16d48"), "name" : "Go to Lesters"}

This is what happens when I print val.

Readable {
  pool: null,
  server: null,
  disconnectHandler: 
   { s: { storedOps: [], storeOptions: [Object], topology: [Object] },
     length: [Getter] },
  bson: {},
  ns: 'vectio.booking',
   { find: 'vectio.booking',
     limit: 0,
     skip: 0,
     query: { name: [Object] },
     slaveOk: true,
     readPreference: { preference: 'primary', tags: undefined, options: [Object] } },
  options: 
   { skip: 0,
     limit: 0,
     raw: undefined,
     hint: null,
     timeout: undefined,
     slaveOk: true,
     readPreference: { preference: 'primary', tags: undefined, options: [Object] },
      EventEmitter {
        domain: null,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        s: [Object],
        serverConfig: [Getter],
        bufferMaxEntries: [Getter],
        databaseName: [Getter] },
     promiseLibrary: [Function: Promise],
     disconnectHandler: { s: [Object], length: [Getter] } },
  topology: 
   EventEmitter {
     domain: null,
     _events: 
      { reconnect: [Function],
        reconnectFailed: [Function],
        timeout: [Object],
        error: [Object],
        close: [Function],
        destroy: [Object],
        serverDescriptionChanged: [Function],
        serverHeartbeatStarted: [Function],
        serverHeartbeatSucceeded: [Function],
        serverHeartbeatFailed: [Function],
        serverOpening: [Function],
        serverClosed: [Function],
        topologyOpening: [Function],
        topologyClosed: [Function],
        topologyDescriptionChanged: [Function],
        attemptReconnect: [Function],
        monitoring: [Function] },
     _eventsCount: 17,
     _maxListeners: undefined,
     id: 0,
      { options: [Object],
        logger: [Object],
        Cursor: [Object],
        bson: {},
        pool: [Object],
        disconnectHandler: [Object],
        monitoring: true,
        inTopology: false,
        monitoringInterval: 5000,
        topologyId: -1 },
     ismaster: 
      { ismaster: true,
        maxBsonObjectSize: 16777216,
        maxMessageSizeBytes: 48000000,
        maxWriteBatchSize: 1000,
        localTime: 2016-11-09T20:41:56.152Z,
        maxWireVersion: 2,
        minWireVersion: 0,
        ok: 1 },
     lastIsMasterMS: 6,
     monitoringProcessId: 
      Timeout {
        _called: false,
        _idleTimeout: 5000,
        _idlePrev: [Object],
        _idleNext: [Object],
        _idleStart: 255,
        _onTimeout: [Function],
        _repeat: null },
     initalConnect: false,
     wireProtocolHandler: {},
     _type: 'server',
     clientInfo: 
      { driver: [Object],
        os: [Object],
        platform: 'Node.js v6.2.1, LE, mongodb-core: 2.0.13' },
     lastUpdateTime: 0,
     lastWriteDate: 0,
     staleness: 0 },
  cursorState: 
   { cursorId: null,
      { find: 'vectio.booking',
        limit: 0,
        skip: 0,
        query: [Object],
        slaveOk: true,
        readPreference: [Object] },
     documents: [],
     cursorIndex: 0,
     dead: false,
     killed: false,
     init: false,
     notified: false,
     limit: 0,
     skip: 0,
     batchSize: 1000,
     currentLimit: 0,
     transforms: undefined },
  logger: { className: 'Cursor' },
  _readableState: 
   ReadableState {
     objectMode: true,
     highWaterMark: 16,
     buffer: [],
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: false,
     endEmitted: false,
     reading: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined,
   { numberOfRetries: 5,
     tailableRetryInterval: 500,
     currentNumberOfRetries: 5,
     state: 0,
     streamOptions: {},
     bson: {},
     ns: 'vectio.booking',
      { find: 'vectio.booking',
        limit: 0,
        skip: 0,
        query: [Object],
        slaveOk: true,
        readPreference: [Object] },
     options: 
      { skip: 0,
        limit: 0,
        raw: undefined,
        hint: null,
        timeout: undefined,
        slaveOk: true,
        readPreference: [Object],
        db: [Object],
        promiseLibrary: [Function: Promise],
        disconnectHandler: [Object] },
     topology: 
      EventEmitter {
        domain: null,
        _events: [Object],
        _eventsCount: 17,
        _maxListeners: undefined,
        id: 0,
        s: [Object],
        ismaster: [Object],
        lastIsMasterMS: 6,
        monitoringProcessId: [Object],
        initalConnect: false,
        wireProtocolHandler: {},
        _type: 'server',
        clientInfo: [Object],
        lastUpdateTime: 0,
        lastWriteDate: 0,
        staleness: 0 },
     topologyOptions: 
      { host: 'localhost',
        port: 27017,
        disconnectHandler: [Object],
        cursorFactory: [Object],
        reconnect: true,
        emitError: true,
        size: 5,
        socketOptions: {},
        clientInfo: [Object],
        readPreference: [Object],
        promiseLibrary: [Function: Promise],
        bson: {} },
     promiseLibrary: [Function: Promise],
     currentDoc: null },
  sortValue: undefined }
/home/dilraj/Documents/Vectio/scenario-dilraj/node_modules/mongodb/lib/utils.js:99
    process.nextTick(function() { throw err; });
TypeError: Converting circular structure to JSON

I am trying to get something like _id: ObjectId("58238283565e2c1940b16d48"), name: "Go to Lesters"

or something similar, as long as it makes sense! I just haven't seen anything like this.

I am using Node's Express JS framework, and the only modules I have are Nodemon, Express, bodyParser and Mongo. Nothing else! Thank you, appreciate the love!

The object you are logging is the Mongo cursor. This can be useful at times but to just get the document that is not what you need.

Thing.find(query).toArray(function(err, result){ ... })

Should just return the documents that match your query.

You are answering an old question but not providing a full answer, please post the working code including any useful comments. – 5202456 Aug 30, 2018 at 20:49

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.