2016-11-09 11 views
1

私は何度も何度も何度も何かをクエリしています。見てください、私は理解できないようです。適切なMongoDBクエリを実行する(TypeError:循環構造をJSONに変換する)

/* 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 
    }); 
}) 

私は多分、私のクエリが間違っていた、おそらく多分それはモンゴシェル投げの問題だが、私はモンゴシェルに入ったときと思いました。

use dbname

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

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

これは私がvalを印刷するときに何が起こるかです。

Readable { 
    pool: null, 
    server: null, 
    disconnectHandler: 
    { s: { storedOps: [], storeOptions: [Object], topology: [Object] }, 
    length: [Getter] }, 
    bson: {}, 
    ns: 'vectio.booking', 
    cmd: 
    { 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] }, 
    db: 
     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, 
    s: 
     { 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, 
    cmd: 
     { 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, 
    s: 
    { numberOfRetries: 5, 
    tailableRetryInterval: 500, 
    currentNumberOfRetries: 5, 
    state: 0, 
    streamOptions: {}, 
    bson: {}, 
    ns: 'vectio.booking', 
    cmd: 
     { 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 

私は、それが理にかなっているように、 { _id: ObjectId("58238283565e2c1940b16d48"), name: "Go to Lesters" }

または類似のもののようなものを取得しようとしています!私はちょうどこのようなことは見ていない。

私はノードのエクスプレスJSフレームワークを使用していますし、私が持っている唯一のモジュールはNodemon、エクスプレス、bodyParserとモンゴです。他に何もない!ありがとう、愛に感謝!

答えて

1

ログを記録するオブジェクトは、Mongoのカーソルです。これは時に便利ですが、必要なものではないドキュメントを取得するだけです。

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

あなたのクエリに一致するドキュメントを返すだけでよいでしょう。あなたは返します、単一のオブジェクトを要求した場合

+0

WOWを使用することができます!私はこれを前に試しましたが、私の構文はちょっとだった!ありがとう! – dsomel21

1

、あなたも Thing.findOne({ name: {$regex : search}}, function(err, val) {

関連する問題