2014-12-17 2 views
2

나는 mongodb에서 작동하는 findOne 함수를 얻으 려하고있다. 이 튜토리얼 (http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/)을 따라 가면 잘 작동하지만, 간단한 findOne을 얻으려고 할 때 그런 문제가 발생했습니다. 누군가 나를 도와주세요. 나는 내가 할 수있는 모든 튜토리얼을 검색하고 난 그냥 ({_ ID : "idnumber는"}) findone을 사용할 수 없습니다 알고몽고킨과 노드가있는 findOne

router.get('/userlist/:id', function(req, res) { 
db = req.db; 
ObjectID = require('mongoskin').ObjectID; 
var userToGet = req.params.id; 
db.collection('userlist').findOne({_id: db.ObjectID.createFromHexString(userToGet)}, function(err, result) { 
    console.log(result.username); 
}); 
}); 

내가 오류,하지만 난 내 잘못이 무엇인지 모른다 "정의되지 않은"createFromHexString 메서드를 호출 할 수 없습니다. mongoskin.objectid가 필요한 위치는 어디입니까?

내 findall은 완벽하게 작동합니다 :

router.get('/userlist', function(req, res) { 
db = req.db; 
db.collection('userlist').find().toArray(function (err, items) { 
    res.json(items); 
}); 
}); 

어떤 도움을 주시면 감사하겠습니다.

db.ObjectID.createFromHexString(userToGet) 

, 당신은 일을해야한다 :

ObjectID.createFromHexString(userToGet) 

당신이 한 때 이미 ObjectID 변수를 선언하기 때문에 :

답변

2

귀하의 문제는 당신이 할 때,

ObjectID = require('mongoskin').ObjectID; 

팁 : var 문없이 변수를 선언하지 마십시오 (REAL 인 경우 제외). 필요한 경우), 그렇게하면 글로벌 범위에 포함될 것입니다. 대신 다음을 수행하십시오 :

var ObjectID = require('mongoskin').ObjectID; 
+0

감사합니다. 나는 var을 실수로 버렸지 만 db를 삭제해야한다는 것을 알지 못했습니다! 다시 한 번 감사드립니다 :) – user1180888

+2

추가 팁 : .jshint 파일과 편집기 용 jshint 플러그인을 사용하십시오. 그리고 나서''use strict ';''행을 모든 파일 상단에 추가하십시오. 그리고 모든'var'과 비슷한 문제를 지적 할 것입니다 :) – Zlatko