1

私はここが初めてで、mongoなども初めてで、助けが必要な奇妙な問題を抱えています。

ノードで実行している app.js ファイルを作成しました。Web リクエストをリッスンし、関数を呼び出して、mongoskin ドライバーを使用してレコードを mongodb に書き込みます。ある程度は機能しますが、何らかの理由で、1つではなく2つのレコードをmongodbに挿入します。

この段階でコードがどのように結合して連携するかを理解しようとしているだけなので、コードは適切な設計ではなく、現時点ではハードコードされていることに気付きました。とにかく、ここに私の app.js のコードがあります:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end( hello() );
}).listen(3000, '127.0.0.1');
console.log('Server running at http://127.0.0.1:3000/');

function hello()
{
    // test mongodb and mongoskin driver
    var msg = "";
    var db = require('mongoskin').db('localhost:27017/mydb'); 

    db.collection('users').insert({site: "test.com", email: "fredbloggs@gmail.com", firstname: "Fred", lastname: "Bloggs", password: "hello"}, 
        function(err, result) {
            if (err) msg = "fail";
            if (result) msg="success";
        });

    return msg; 
}

元のインストールで問題が発生しました。mongo を 2 回インストールしたのではないでしょうか。2 つの mongo インスタンスが私のリクエストを受け取り、同じデータベースを指している可能性はありますか? おそらく少し希薄ですが、どんな助けでも大歓迎です。

ケリーに感謝します。

4

2 に答える 2

0

始めたばかりなので、mongoskin の代わりにネイティブ ドライバーを使用することをお勧めします。または、少なくとも設定をテストしてください。Mongoskin はネイティブ ドライバー上に構築されており、どちらも積極的に開発されているため、バージョン スキューの問題に陥りやすい可能性があります。ネイティブ ドライバーに慣れ、future パターンの利便性が必要になったら、mongoskin に簡単に切り替えることができます。

于 2013-01-04T17:48:01.423 に答える
0

こんにちは、あなたの例でのドライバーの簡単な使い方です。MongoClient を使用して db に 1 回接続すると、Web サーバーへの各リクエストで接続プールが再利用されることに注意してください。

var   http = require('http');
    , MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/mydb", function(err, db) {

  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    hello(res);
  }).listen(3000, '127.0.0.1');

  console.log('Server running at http://127.0.0.1:3000/');

  function hello(res) {
    // test mongodb and mongoskin driver
    db.collection('users').insert({
        site: "test.com"
      , email: "fredbloggs@gmail.com"
      , firstname: "Fred"
      , lastname: "Bloggs"
      , password: "hello" }, function(err, result) {
        var msg;

        if(err) msg = "fail";
        if(result) msg="success";

        res.end(msg);
      });
  }
})
于 2013-01-15T22:35:59.707 に答える