繁体   English   中英

node.js从mongodb数据库获取所有集合

[英]nodejs get all collection from mongodb database

我已经定义了与mongo db的简单连接,以将所有保存的记录提取到数据库中,并显示我为空,并且findAll不起作用:

var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;

ArticleProvider = function (host, port) {
    this.db = new Db('article', new Server(host, port, {auto_reconnect: true}), {safe:false});
    this.db.open(function () {
    });
};

ArticleProvider.prototype.getCollection = function (callback) {
    this.db.collection('article'), function (error, article_collection) {
        if (error) callback(error);
        else callback(null, article_collection);
    }
};

ArticleProvider.prototype.findAll = function(callback) {
    this.getCollection(function(error, article_collection) {
        if( error ) callback(error)
        else {
            article_collection.find().toArray(function(error, results) {
                if( error ) callback(error)
                else callback(null, results)
            });
        }
    });
};

exports.ArticleProvider = ArticleProvider;

为了在article数据库中获取所有保存的数据,我正在测试日志并从mongo shell中找到所有保存的记录到article

> db.article.find()
{ "_id" : ObjectId("55033f527be6c3a7bc7e5b04"), "title" : "Post two", "body" : "Body two" }
{ "_id" : ObjectId("55033f527be6c3a7bc7e5b05"), "title" : "Post three", "body" : "Body three" }
> 

在我的nodejs路由中,我为空,我无法从应用程序中获取此记录

我的nodejs服务器:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('../')(server);
var connect = require('connect');
app.use(connect.logger('dev'));
app.use(connect.json());  
app.use(connect.urlencoded());


require('../routes/routes.js')(app);

var port = process.env.PORT || 3000;
server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

我的路线内容文件:

var ArticleProvider = require('config/models/connection').ArticleProvider;
var articleProvider = new ArticleProvider('localhost', 27017);

module.exports = function (app) {
    app.get('/', function (req, res) {
        articleProvider.findAll( function(error,docs){
            console.log(docs);
        });
        res.end();
    });

};

对于初学者而言,ArticleProvider原型属性上的#getCollection方法具有语法错误。 您可能会一起摆脱#getCollection,不确定自己在做什么。 我认为您正在尝试仅查询数据库以获取该集合中的所有文章文档? 尝试这个:

ArticleProvider.prototype.findAll = function(callback) {
  this.db.collection('article').find({}, function(error, results) {
    if (error) {
      callback(error);
    } else {
      callback(null, results);
    }
  });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM