2013-05-23 11 views
0

처음 초보자를 Node.js로 보내고 최근에 코드를 분석하려고 시도했습니다 : http://howtonode.org/express-mongodb. 하지만 메신저. 이 코드가 어떻게 작동하는지 이해하지 못합니다. articleProvider. findAll (function (error, docs) { res.send (docs); });Express 및 mongodb 기사

이 메서드는 다음과 같은 findAll 함수를 호출합니다. var articleCounter = 1; ArticleProvider = function() {}; ArticleProvider.prototype.dummyData = [];

ArticleProvider.prototype.findAll = **function(callback) { 
callback(null, this.dummyData) 
};** 

어떻게 선언 할 수없는 함수 콜백으로 findAll 메서드를 호출 할 수 있습니까?! 을 yor이

답변

4

다음 코드를 도와 주셔서 감사합니다 :

ArticleProvider.prototype.findAll = function(callback) 
... 

자체가 인수, callback라는 이름의 함수로 취하는 함수가 될 ArticleProvider.findAll를 선언한다. ArticleProvider.findall(foo)을 호출하면 foo 함수가 두 개의 인수, 즉 첫 번째 인수로 null, 두 번째 인수로 ArticleProvider.dummyData이 호출됩니다.

좋은 Javascript 책 (예 : Crockford 책)을 시작하는 것이 가장 좋습니다. 행운을 빕니다.

[편집]

나는 아래의 응답 중 하나에 몽구스를 사용하는 제안을 볼 수 있지만 그것을 사용 한 후, 지금은 많은 기예르모 라우 흐의 Monk을 선호합니다. Mongoose보다 훨씬 간단하며 스키마없이 작업 할 수 있습니다. MongoDB 꼭대기에 단순한 레이어가 필요한 경우 Monk이 나에게 트릭을 보냈습니다.

+0

몽크에 대해 잘 알고 있습니다. 노드의 빠른 DB 작업을위한 아주 좋은 솔루션 인 것 같습니다. – gustavohenke

1

램은 멋진 일을했지만, 새로운 것이라면 mongodb를 직접 사용하지 않고 "몽구스"를보고 싶을 수도 있습니다. 대부분의 새로운 개발자들은 그것을 좀 더 쉽게 찾을 수 있으며 널리 사용되기 때문에 (mongodb가 직접적으로 사용되는 것이 아니라 ..) 샘플을 쉽게 찾을 수 있습니다. 다음은 mongoose을 사용한 간단한 샘플입니다.

// require your model 
var Product = require('../models/product.js'); 

// example getting a product by id using mongoose. 
app.get('/product/:id, function (req, res) { 
     Product.findOne({ _id: id }, function (err, product) { 
     if(err) 
      console.log(err + ''); 
     else 
      res.render('product, { title: 'Your Title', model: product }); 
    }); 
}); 

행운을 비네!

1

메소드 findAll이 함수로 호출 될 수 있습니다. 콜백은 선언되지 않습니다.

당신은 당신이 모두를 찾기 위해 인수로 전달하고 함수를 인라인으로 선언되어

articleProvider.findAll(function(error, docs){ res.send(docs); }); 

를 호출 할 때. "function (error, docs) {res.send (docs);}"는 함수를 선언하고 매개 변수로 전달하는 곳입니다.

램 바와 같이, 먼저 함수를 선언 할 수

합니다 (foo는) 호출하고 매개 변수로 전달합니다

어느 경우에 매개 변수로 기능 를 전달하는 것을
var foo = function(error, docs){ res.send(docs); } 
articleProvider.findAll(foo); 

공지 사항 , 함수를 실행 한 결과가 아닙니다.

관련 문제