【问题标题】:mongodb and node.js drivers not connecting for chat rest apimongodb 和 node.js 驱动程序未连接聊天休息 api
【发布时间】:2015-08-06 07:07:21
【问题描述】:

在使用 node.js/mongodb 核心模块时尝试连接到 mongodb 时出现错误。

目前使用 node.js v0.10.25 和 mongodb v2.6.1

我的一个错误是连接到 mongodb

mongo.Db.connect(host, function(error, client) {                                                                                               
         ^                                                                                                                                     
TypeError: Object function (databaseName, topology, options) {

我在运行 nodemon 时也得到了这个

[nodemon] app crashed - waiting for file changes before starting...

这是我的聊天休息 api 代码

// first we include our libraries
var http = require('http');
var util = require('util');
var querystring = require('querystring');
var mongo = require('mongodb');

// make a string to connect to MongoDB:
var host = "mongodb://localhost/test";

// We put all the logic inside of an open connection in the form of a callback function:
mongo.Db.connect(host, function(error, client) {
    console.log("this is working");
    if (error) throw error;

    var collection = new mongo.Collection(client, 'messages');

    var app = http.createServer( function (request, response) {

        if (request.method === "GET" && request.url === "/messages/list.json") {
            collection.find().toArray(function(error,results) {
                response.writeHead(200,{'Content-Type':'text/plain'});
                console.dir(results);
                response.end(JSON.stringify(results));
            });
        };

        if (request.method === "POST" && request.url === "/messages/create.json") {
            request.on('data', function(data) {
                collection.insert(querystring.parse(data.toString('utf-8')), {safe:true}, function(error, obj) {
                    if (error) throw error;
                    response.end(JSON.stringify(obj));
            })              
        })
    };
});

    var port = process.env.PORT || 3000;
    app.listen(port);
})

希望有人可以帮助我:)

【问题讨论】:

    标签: javascript node.js mongodb rest node.js-stream


    【解决方案1】:

    问题在于建立与 mongodb 驱动程序的连接。当前使用的方法是用于 mongodb v1.49,并且已经更改为当前版本的 mongodb v2.6.1。

    这里是更新的代码,以反映连接到当前版本的 mongodb 所需的更改。

        /*
         * github https://github.com/azat-co/rpjs/tree/master/mongo
         *  
         * To test via CURL terminal commands and see list of messages run: 
         * $ curl http://localhost:3000/messages/list.json 
         * 
         * NOTE: Will return empty array
         * 
         * POST a new message:
         * $ curl -d "username=BOB&message=test" http://localhost:3000/messages/create.json 
         * 
         * To add new messages:
         * $ curl -X POST -d 'name=sosana&message=waz up' http://localhost:3000/messages/create.json 
         * 
         * To check if messages worked
         * $ curl localhost:3000/messages/list.json
         * 
        */
    
        // first we include our libraries
        var http = require('http');
        var util = require('util');
        var querystring = require('querystring');
        var MongoClient = require('mongodb').MongoClient;
        var mongo = new MongoClient();
    
        // make a string to connect to MongoDB:
        var host = "mongodb://localhost/test";
    
        // We put all the logic inside of an open connection in the form of a callback function:
        mongo.connect(host, function(error, db) {
            console.log("this is working");
            if (error) throw error;
    
            // establish a connection to the database
            var myDB = db.db("test");
    
            // establish a connection to the collection 
            var collection =  myDB.collection("messages");
    
            var app = http.createServer( function (request, response) {
    
                if (request.method === "GET" && request.url === "/messages/list.json") {
                    collection.find().toArray(function(error,results) {
                        response.writeHead(200,{'Content-Type':'text/plain'});
                        console.dir(results);
                        response.end(JSON.stringify(results));
                    });
                };
    
                if (request.method === "POST" && request.url === "/messages/create.json") {
                    request.on('data', function(data) {
                        collection.insert(querystring.parse(data.toString('utf-8')), {safe:true}, function(error, obj) {
                            if (error) throw error;
                            response.end(JSON.stringify(obj));
                    })              
                })
            };
    });
    
        var port = process.env.PORT || 3000;
        app.listen(port);
        console.log("listening on port " + port);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多