1

在使用 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);
})

希望可以有人帮帮我 :)

4

1 回答 1

0

问题是建立与 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);
})
于 2015-05-24T20:07:44.817 回答