从MongoDB获取数据
问题描述:
我试图从MongoDB中加载数据到我的express,最终在我的html中使用angular来显示。现在我已经得到它的数据,但这只适用于数据库中的一条记录。如果我创建多个记录,它给在控制台以下错误:从MongoDB获取数据
“后,他们被送到不能发送头”
这是我的特快“取”请求:
router.get('/getdata', function(req, res, next){
var findDocuments = function(db, callback) {
var cursor = db.collection('userdata').find({});
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
res.status(200).json(doc);
} else {
callback();
}
});
};
mongo.connect(url, function(err, db) {
assert.equal(null, err);
findDocuments(db, function() {
db.close();
});
});
console.log('Items have been returned');
});
答
router.get('/getdata', function(req, res, next){
var findDocuments = function(db, callback) {
//use such codtion that filter null/empty doc
//replace key with field of your doc
var cursor = db.collection('userdata').find({'key' : {$exists : true}});
//return all docs
if(cursor){
return callback(cursor);
}else{
return callback([]);
}
};
mongo.connect(url, function(err, db) {
assert.equal(null, err);
findDocuments(db, function(docs) {
db.close();
//send finaly doc here
console.log(docs);
res.status(200).send(docs);
});
});
console.log('Items have been returned');
});
+0
这不起作用为了我。它在控制台中返回一个错误:TypeError:将循环结构转换为JSON – Larsmanson
+0
根据文档模式或mongo驱动程序在发送或更改查找条件之前使用console.log检查文档 –
首先,我会建议使用Mongoose,它提供了非常好的附加功能来与MondoDB一起工作。创建模式后,您可以通过简单的一个mongoose方法mySchema.find(err,response)来获取所有现有的对象。并用猫鼬,你将不需要打开和关闭连接“手动” – JavaEvgen
不使用循环来检查空文档,把条件放在发现像find({{key:{$ exists:true}}) –