【问题标题】:How to query a Mongo with Node.js?如何使用 Node.js 查询 Mongodb?
【发布时间】:2015-11-06 00:52:34
【问题描述】:

我意识到这听起来像是一个完全多余的问题,但请听我说完。

最终我想从 dom 查询 MongoDB,但在那之前我可以从我的路由模块中查询。这是我的查询:

var db = require('./config/db.js');

router.get('/test', function (req, res) {
  res.jsonp(db.getData('sampleSet'));
});

'sampleSet' 是我要查询的集合的名称。 getData 函数应该从 MongoDB 获取数据。我把它放在 MongoClient 的连接函数的回调中,因为我想不出任何其他方式。从我的角度来看,由于getData() 正在返回一个带有回调的函数findData,它应该返回数据。但事实并非如此。 console.logs 返回数据,但它必须返回未定义。

function findData (db, c, callback) {
  var collection = db.collection(c);
  collection.find().toArray(function(err, docs) {
    assert.equal(err, null);   
    callback(docs);
  });
};

MongoClient.connect(url, function(err, db) {
  assert.equal(err, null);
  console.log('CONNECTED CORRECTLY TO SERVER.');
  exports.getData = function(c) {
    return 
    findData(db, c, function(docs) {
      console.log('FOUND THE FOLLOWING RECORDS: ');
      return docs;
      db.close();
    });
  }
});

【问题讨论】:

  • res.jsonp 最终将使用getData 调用的返回值(这没什么)

标签: javascript node.js mongodb asynchronous mongodb-query


【解决方案1】:

如果var db = require('./config/db.js');是你的schema,'sampleSet'是collection name,那么你可以使用这个来获取数据

router.get('/test', function (req, res) {
  db.sampleSet.find({},function(err,data){
    if(err)
      throw err;
    else
      res.send(data)
    });
  });

但为此你必须以这种方式编写db.js 文件

var mongoose = require('mongoose');
var Schema = mongoose.Schema;



var sampleSetSchema = new Schema({
//Your schemas goes here..
  // fields : types
  // ..
  // ..
}, {
	collection: "sampleSet" // collection name
});



// // Export the Mongoose model

var SampleSet = mongoose.model('SampleSet', sampleSetSchema);
module.exports = {

	SampleSet: SampleSet

}

【讨论】:

    【解决方案2】:

    您的 findData 方法没有返回任何内容。

    它将docs 传递给callback 并且callback 再次将docs 返回给findData 方法。但是findData没有返回。

    所以如果findData 没有返回任何东西,getData 也不会返回任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2015-04-24
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多