0

ここでの最初の質問ですので、親切にしてください;)

Modulus.io node.jsホスティングのMongoDBデータベースに接続するようにNode.jsサーバーを構成しています(本当に良いもので、チェックする価値があります)が、接続を適切に確立できないようです。スタートガイドによると、接続URIは次の形式で取得されます。

mongodb:// user:pass@mongo.onmodulus.net:27017 / 3xam913

しかし、ホストとポートのみを定義するServerクラスの引数構造のため、サーバーに移植しようとした(ローカルで実行されていた)コードの構造では機能しないようです...

これは私が接続に適応させようとしているコードです:

// server setup
var mongo = require('mongodb'),
    mdbServer = mongo.Server,
    mdbDb = mongo.Db,
    mdbObjectID = mongo.ObjectID;

// open a connection to the mongoDB server
var mdbserver = new mdbServer('localhost', 27017, {auto_reconnect: true});

// request or create a database called "spots03"
var db = new mdbDb('spots03', mdbserver, {safe: true});

// global var that will hold the spots collection
var spotsCol = null;

// open the database
db.open(function(err, db) {
    if(!err) {
        // if all cool
        console.log("Database connection successful");

        // open (get/create) a collection named spotsCollection, and if 200, 
        // point it to the global spotsCol
        db.createCollection(
            'spotsCollection',
            {safe: false},  // if col exists, get the existing one
            function(err, collection) {spotsCol = collection;}
        );
    }
});

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

3

いくつかのように見えます:

  1. 接続URLはmongo.onmodulus.netである必要があります

    var mdbserver = new mdbServer('mongo.onmodulus.net'、27017、{auto_reconnect:true});

  2. rounceは正しく、データベース名はModulusによって自動生成されます。

    var db = new mdbDb( '3xam913'、mdbserver、{safe:true});

  3. Modulusデータベースには認証が必要です。createCollectionを呼び出す前に、authを呼び出して、プロジェクトダッシュボードで設定されているユーザークレデンシャルを渡す必要があります。

私はModulus開発者であり、DB名は理想的ではないことを知っています。

編集:実際の例の完全なソースは次のとおりです。すべてのHTTPリクエストを記録してから、すべてのリクエストをユーザーに送り返します。

var express = require('express'),
      mongo = require('mongodb'),
     Server = mongo.Server,
         Db = mongo.Db;

var app = express();

var server = new Server('mongo.onmodulus.net', 27017, { auto_reconnect: true });
var client = new Db('piri3niR', server, { w: 0 });
client.open(function(err, result) {
  client.authenticate('MyUser', 'MyPass', function(err, result) {
    if(!err) {
      console.log('Mongo Authenticated. Starting Server on port ' + (process.env.PORT || 8080));
      app.listen(process.env.PORT || 8080);
    }
    else {
      console.log(err);
    }
  });
});

app.get('/*', function(req, res) {
  client.collection('hits', function(err, collection) {
    collection.save({ hit: req.url });

    // Wait a second then print all hits.
    setTimeout(function() {
      collection.find(function(err, cursor) {
        cursor.toArray(function(err, results) {
          res.send(results);
        });
      });
    }, 1000)
  });
});
于 2012-12-29T23:48:40.533 に答える
1

おそらくデータベース名が間違っていますか?

件名に関するMongoDBドキュメントから、 「3xam913」はデータベース名であり、「spots03」ではありません。

var db = new mdbDb('3xam913', mdbserver, {safe: true});
于 2012-12-29T02:59:46.320 に答える