但是,这会返回大量不需要的数据。 我也查看了这些数据,但我没有看到集合中的输入值/字段。 我希望它只将字段值作为JSON对象返回。 我应该怎么做?
示例输出:(太多张贴所有内容)
Readable { connection: null, server: null, disconnectHandler: { s: { storedOps: [], storeOptions: [Object], topology: [Object] }, length: [Getter] }, bson: {}, ns: '****', cmd: { find: '******', limit: 0, skip: 0, query: {}, slaveOk: true, readPreference: { preference: 'primary', tags: undefined, options: undefined } }, options: { skip: 0, limit: 0, raw: undefined, hint: null, timeout: undefined, slaveOk: true, readPreference: { preference: 'primary', tags: undefined, options: undefined }, db: EventEmitter { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, s: [Object], serverConfig: [Getter], bufferMaxEntries: [Getter], databaseName: [Getter], options: [Getter], native_parser: [Getter], slaveOk: [Getter], writeConcern: [Getter] }, promiseLibrary: [Function: Promise], disconnectHandler: { s: [Object], length: [Getter] } }, topology: EventEmitter { domain: null, _events: { reconnect: [Function], timeout: [Object], error: [Object], close: [Function], destroy: [Object] }, _eventsCount: 5, _maxListeners: undefined,和更多......
谢谢。
app.get('/',function(req,res){ var response={}; db.collection('first').find({},function(err,result){ if(err){ db.close(); console.log('Error'); console.log(err); } else{ db.close(); console.log('Success'); console.log(response); } }); res.end(response); });However, this returns a lot of unwanted data. I looked through that data too, but I do not see the entry values/fields made in the collection. I want it to return field values only as a JSON object. How should I do this ?
Sample output: (Too much to post everything)
Readable { connection: null, server: null, disconnectHandler: { s: { storedOps: [], storeOptions: [Object], topology: [Object] }, length: [Getter] }, bson: {}, ns: '****', cmd: { find: '******', limit: 0, skip: 0, query: {}, slaveOk: true, readPreference: { preference: 'primary', tags: undefined, options: undefined } }, options: { skip: 0, limit: 0, raw: undefined, hint: null, timeout: undefined, slaveOk: true, readPreference: { preference: 'primary', tags: undefined, options: undefined }, db: EventEmitter { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, s: [Object], serverConfig: [Getter], bufferMaxEntries: [Getter], databaseName: [Getter], options: [Getter], native_parser: [Getter], slaveOk: [Getter], writeConcern: [Getter] }, promiseLibrary: [Function: Promise], disconnectHandler: { s: [Object], length: [Getter] } }, topology: EventEmitter { domain: null, _events: { reconnect: [Function], timeout: [Object], error: [Object], close: [Function], destroy: [Object] }, _eventsCount: 5, _maxListeners: undefined,and more......
Thank you.
最满意答案
首先,你正在记录并发送一个空的response对象。 您的问题来自语法, find()只接受一个参数并返回一个游标,您必须在循环内调用next()以获取每个文档或调用toArray()以一次获取所有文档:
app.get('/', function (req, res) { db.collection('first').find({}).toArray(function (err, docs) { db.close(); if (err) { console.log('Error'); console.log(err); res.end(); } else { console.log('Success'); console.log(docs); res.json(docs); } }); });First of all, you're logging and sending back an empty response object. Your issue come from the syntax, find() takes only one parameter and returns a cursor, you have to call next() on it inside a loop to get every document or call toArray() to get all documents at once:
app.get('/', function (req, res) { db.collection('first').find({}).toArray(function (err, docs) { db.close(); if (err) { console.log('Error'); console.log(err); res.end(); } else { console.log('Success'); console.log(docs); res.json(docs); } }); });更多推荐
发布评论