有关filter查询的mongodb本机驱动程序问题

我无法使用查询mongodb。

我不知道是否可以详细说明正在发送一个对象的方法,但是被拒绝或有时候filter被清空。

它总是返回一个错误:

MongoError: query selector must be an object 

查询的input是:

 { filter: 'f', limit: '5', page: '1', sort: '-posted' } 

我的服务器路线:

 exports.findAll = function(req, res, next) { var locals = {}, section = req.params.section, query = req.query, filter = {}; if(query.filter) { filter = query.filter.replace(/"(\w+)"\s*:/g, '$1:'); filter = filter.replace(/["]/g, "'"); } console.log(filter); delete query.filter; async.series([ function(callback) { MongoClient.connect(url, function(err, db) { if (err) return callback(err); locals.collection = db.collection(section); callback(); }); }, function(callback) { locals.collection.count(filter, function (err, result){ if (err) return callback(err); locals.count = result; callback(); }); }, function(callback) { //var cursor = locals.collection.find(filter); var cursor = locals.collection.find(filter, req.query); // if(req.query.order) { // cursor = cursor.sort(); // } // // if(req.query.limit) { // cursor = cursor.limit(Math.abs(req.query.limit)); // if(req.query.page) { cursor = cursor.skip(Math.abs(req.query.limit) * --req.query.page); } // } cursor.toArray(function(err, docs) { if (err) return callback(err); locals.docs = docs; callback(); }); } ], function(err) { //This function gets called after the three tasks have called their "task callbacks" if (err) return next(err); // Here locals will be populated with 'count' and 'docs' res.json({ count: locals.count, data: locals.docs }); }); 

};

我改变function服务器,现在我的回应是:

 { filter: {situation: 't'}, limit: '5', page: '1', sort: '-posted' } 

和同样的错误:( 🙁