私はmongo dbからの通知の全リストを取るが、空の([])配列も返す。私はコールバックまたはそれより短い方法が必要であることを知っている。 node.jsによるmongodbからのデータの収集に関する考えはありますか?私はこの/通知し法(http://127.0.0.1:5000/Notifies)を呼び出した場合node.jsでmongodb collection getallを呼び出す方法は?
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);
})
はい私はJSON文字列の配列に変換する
Json.stringify
を使用し、直接配列を返し、この使用.toArray
の代わりにdocs.each
のために使用しないでください。しかし、結果は同じです... – Penguen'docs'の値を出力してみてください。空であれば、コレクションが空であるか、クエリが間違っています。 –
編集した回答を確認してください。コンソールを見て 'docs'の値を見てください。完了したら 'console.log'を削除することを忘れないでください。がんばろう! –