我想从 mongo db 获取整个通知列表,但它返回空 ([]) 数组,我也知道我需要回调或更短的方式。您是否知道通过 node.js 从 mongodb 收集任何数据?如果我调用这个/Notifies 方法 ( http://127.0.0.1:5000/Notifies )
var MongoClient = require('mongodb').MongoClient;
var express = require("express");
var app = express();
format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/Test', function (err, db) {
if (err) {
throw err;
} else {
console.log("successfully connected to the database");
}
db.close();
});
app.get('/Notifies', function (req, res) {
// BAD! Creates a new connection pool for every request
console.log('connected');
MongoClient.connect('mongodb://127.0.0.1:27017/Test', function (err, db) {
if (err) throw err;
var coll = db.collection('Notifies');
var arr = [];
coll.find({}, function (err, docs) {
docs.each(function (err, doc) {
if (doc) {
console.log(doc);
arr.push(doc);
} else {
res.end();
}
});
});
return res.json(arr);
});
});
var port = Number(process.env.PORT || 5000);
app.listen(port, function () {
console.log("Listening on " + port);
})
最佳答案
不要使用 for docs.each
而不是使用 .toArray
这样它会直接返回一个数组然后使用 Json.stringify
将其转换为 json 字符串数组
MongoClient.connect('mongodb://127.0.0.1:27017/Test', function (err, db) {
if (err) throw err;
var coll = db.collection('Notifies');
coll.find({}).toArray(function (err, result) {
if (err) {
res.send(err);
} else {
res.send(JSON.stringify(result));
}
})
});
关于javascript - node.js如何调用mongodb集合getall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252124/