jus*_*ame 0 javascript asynchronous mongodb node.js mongodb-query
我意识到这听起来像是一个完全多余的问题,但请听我说完。
最终我想从 dom 查询 MongoDB,但在那之前我可以从我的路由模块做。这是我的查询:
var db = require('./config/db.js');
router.get('/test', function (req, res) {
res.jsonp(db.getData('sampleSet'));
});
Run Code Online (Sandbox Code Playgroud)
'sampleSet' 是我正在查询的集合的名称。getData 函数应该从 MongoDB 获取数据。我把它放在 MongoClient 的 connect 函数的回调中,因为我想不出任何其他方式。从我的角度来看,由于getData()正在返回一个带有回调的函数findData,因此它应该返回数据。但事实并非如此。console.logs 返回数据,但它必须返回 undefined。
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();
});
}
});
Run Code Online (Sandbox Code Playgroud)
如果var db = require('./config/db.js');是您的架构,并且'sampleSet'是集合名称,那么您可以使用此获取数据
router.get('/test', function (req, res) {
db.sampleSet.find({},function(err,data){
if(err)
throw err;
else
res.send(data)
});
});Run Code Online (Sandbox Code Playgroud)
但是为此,您必须以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
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |