簡體   English   中英

Node js連接到mongo db

[英]Node js connecting to mongo db

db初學者試圖讓mongodb和nodejs在雲上互相交談。

我在app-fog上托管一個應用程序,但是即使我嘗試執行最基本的查詢,我也失敗了。 這是將app.js文件推送到雲中的內容。 我相信我已經安裝了所有必需的依賴項(npm install mongodb && express && bson &&收縮warp),但是即使我在整個過程中進行了兩次,也有可能失敗了。

var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');


if(process.env.VCAP_SERVICES){
        var env = JSON.parse(process.env.VCAP_SERVICES);
        var mongo = env['mongodb-1.8'][0]['credentials'];
    }   else   {
    var mongo = {
        "hostname":"localhost",
        "port":3000,
        "username":"",
        "password":"",
        "name":"",
        "db":"db"
    }
}
var generate_mongo_url = function(obj){
    obj.hostname = (obj.hostname || 'localhost');
    obj.port = (obj.port || 3000);
    obj.db = (obj.db || 'test');
    if(obj.username && obj.password){
        return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
    }else{
        return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
        }
    }
var mongourl = generate_mongo_url(mongo);



var record_visit = function(req, res){
/* Connect to the DB and auth */
    require('mongodb').connect(mongourl, function(err, conn){
        if(err){
            console.log(">>",err);
        }
        conn.collection('ips', function(err, coll){
            /* Simple object to insert: ip address and date */
            object_to_insert = { 'ip': req.connection.remoteAddress, 'ts': new Date() };
            /* Insert the object then print in response */
            /* Note the _id has been created */
            coll.insert( object_to_insert, {safe:true}, function(err){
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.write(JSON.stringify(object_to_insert));
            res.end('\n');
            });
        });
    });
}

http.createServer(function(res,req){
    record_visit(req,res);
    require('mongodb').connect(mongourl,function(err,conn){
        console.log(conn+"\n\n");   
    });
    console.log('Hello from us.\n');

})。listen(process.env.VCAP_APP_PORT || 3000);

現在我似乎總是會收到此錯誤:

node_modules/mongodb/lib/mongodb/mongo_client.js:378
          throw err
                ^
TypeError: Cannot call method 'collection' of null

問題似乎不僅與collection有關,而且主要與它的父級conn ,我嘗試將其打印出來,但未成功。 (我懷疑它本身是不確定的。)

我知道這可能是一個簡單的RTFM類型的錯誤,但是所有這些概念在這一點上都讓我感到頭疼。

謝謝!

如果您登錄connect err ,您將很容易發現錯誤:

require('mongodb').connect(mongourl, function(err, conn){
    if( err ) {
        console.log( err ); // <-- here
        ...
    }
    conn.collection('ips', function(err, coll){

順便說一句:無論如何,您應該在繼續使用回調的第二個參數之前始終檢查err

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM