2013-01-04 1 views
1

저는 여기에서 새롭고 몽고 등을 처음 접했습니다. 나는 도움이 필요한 이상한 문제가 있습니다.mongoskin은 하나 대신 두 개의 레코드를 삽입합니다.

node로 실행중인 app.js 파일을 만들었습니다. 웹 요청을 수신하고 mongoskin 드라이버를 사용하여 mongodb에 레코드를 작성하는 함수를 호출합니다. 그것은 일종의 작동하지만 어떤 이유 때문에 mongodb에 두 개의 레코드를 삽입합니다.

코드가 좋은 디자인이 아니며 코드 작성이 어렵다는 것을 알고 있습니다. 왜냐하면이 코드가 어떻게 결합되어이 단계에서 함께 작동하는지 이해하려고하기 때문입니다.

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: "[email protected]", firstname: "Fred", lastname: "Bloggs", password: "hello"}, 
     function(err, result) { 
      if (err) msg = "fail"; 
      if (result) msg="success"; 
     }); 

    return msg; 
} 

내가 내 원래 설치에 몇 가지 문제가 있었다 나는 그런 식으로 두 번이나 뭔가 몽고를 설치 한 수 궁금 어쨌든 여기 내 app.js의 코드는? 두 개의 mongo 인스턴스가 내 요청을 받고 동일한 데이터베이스를 가리킬 가능성이 있습니까? 아마 약간 약하다. 그러나 어떤 도움이라도 크게 평가 될 것이다.

많은 감사합니다 켈리.

+0

(이전 게시물, 알고 있습니다.) 웹 브라우저에서 서버를 방문하는 경우 두 번째 요청은 favicon에 대한 요청일까요? 요청을 구별하지 않으므로 브라우저의 네트워크 탭을 확인하면 2 개의 요청을 보내는 것으로 보입니다. – Greg

답변

0

방금 ​​시작한 이래 mongoskin 대신 native driver으로 작업하고 싶을 수 있습니다. 또는 적어도 구성을 테스트하십시오. Mongoskin은 네이티브 드라이버를 기반으로 개발되었으며 두 버전 모두 적극적으로 개발되고 있으므로 버전 스큐 문제에 쉽게 빠질 수 있습니다. 네이티브 드라이버에 익숙하고 미래 패턴의 편리 성이 필요하다면 mongoskin으로 쉽게 전환 할 수 있어야합니다.

+0

좋아요, 고마워, 내가 해줄거야! –

0

안녕 당신의 예제와 함께 드라이버를 간단하게 사용합니다. MongoClient를 사용하여 db에 한 번 연결하면 웹 서버에 대한 각 요청이 이제 연결 풀을 다시 사용하게됩니다.

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: "[email protected]" 
     , firstname: "Fred" 
     , lastname: "Bloggs" 
     , password: "hello" }, function(err, result) { 
     var msg; 

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

     res.end(msg); 
     }); 
    } 
})