2011-04-23 7 views
0

안녕하세요, 저는 mongodb, mongoose 및 node.js. 나는 몽구스가 어떻게 작동하는지보기 위해 약간의 데모를 만들고 싶다. 설치 (과의 correctes 테스트) 내가 몽구스를 다운로드하고 Node.js를 한 후 (도 몽구스 웹 사이트에서 제공) 다음 코드를 시도 :제공된 데모가있는 몽구스 설정이 작동하지 않습니다.

require.paths.unshift('vendor/mongoose'); 
var mongoose = require('mongoose').Mongoose; 

mongoose.model('User', { 

properties: ['first', 'last', 'age', 'updated_at'], 

cast: { 
    age: Number, 
    'nested.path': String 
}, 

indexes: ['first'], 

setters: { 
    first: function(v){ 
     return this.v.capitalize(); 
    } 
}, 

getters: { 
    full_name: function(){ 
     return this.first + ' ' + this.last 
    } 
}, 

methods: { 
    save: function(fn){ 
     this.updated_at = new Date(); 
     this.__super__(fn); 
    } 
}, 

static: { 
    findOldPeople: function(){ 
     return this.find({age: { '$gt': 70 }}); 
    } 
} 

}); 

var db = mongoose.connect('mongodb://localhost/db'); 

var User = db.model('User'); 

var u = new User(); 
u.name = 'John'; 
u.save(function(){ 
sys.puts('Saved!'); 
}); 

User.find({ name: 'john' }).all(function(array){ 

}); 

문제는 내가 노드 myfile.js를 실행할 때 내가 가지고 있다는 것입니다 다음과 같은 오류 : 이제

node.js:181 
    throw e; // process.nextTick error, or 'error' event on first tick 
    ^
Error: Cannot find module 'mongoose' 
at Function._resolveFilename (module.js:320:11) 
at Function._load (module.js:266:25) 
at require (module.js:364:19) 
at Object.<anonymous> (/my/path/to/mongoose+node test/myfile.js:2:16) 
at Module._compile (module.js:420:26) 
at Object..js (module.js:426:10) 
at Module.load (module.js:336:31) 
at Function._load (module.js:297:12) 
at Array.<anonymous> (module.js:439:10) 
at EventEmitter._tickCallback (node.js:173:26) 

, 나는 "몽구스 + 노드 테스트"라는 내 폴더에 자바 스크립트 파일들을 포함하고 내부에만 몽구스 폴더를 가지고, 그래서 나는이 정말 새로 온 것을 다시 말할 필요, 그리고 물론 myfile.js. 어쩌면 뭔가 빠졌을까요?

답변

1

새 버전에서는 .Mongoose을 사용할 필요가 없습니다.

그냥 다음을 대체 :

var mongoose = require('mongoose').Mongoose;

로 :

var mongoose = require('mongoose')

+0

그것은 작동하지 않았다 : (. – Masiar

+1

나중에 단계 일 것입니다. 지금 당장은 당신의 npm이 올바르게 설치되지 않았 음을 분명히 알게됩니다. 그 후 당신은 몽구스를 설치하고 나서야합니다. – neebz

+0

아직 작동하지 않습니다 : /. 지금 어디로 가야할 지 모르겠다 .. – Masiar

3

몽구스를 찾을 수 없습니다. 가장 쉬운 방법은 npm을 통해 설치하는 것입니다.

는 NPM을 인스톨 한후에하려면

curl http://npmjs.org/install.sh | sh

가 몽구스를 설치하려면 :

npm install mongoose

당신은 또한 다운로드하여 MongoDB를 설치하고 MongoDB의 서버를 시작해야합니다.

unix quickstart은 mongoDB의 설치, 실행 및 테스트를 도와줍니다.

가장 큰 문제는 require.paths을 편집하지 말아야한다는 것입니다. 직접 URL을 요구하거나 패키지 시스템을 통과해야합니다. nodejs docs에서는 require.paths을 피해야합니다.

개인적으로는 de-factor 표준이므로 npm을 사용하는 것이 좋습니다.

+0

덕분에 빠른 응답을! 나는 이미 주제에 언급 된대로 몽구스를 가지고 있는데, 그것을 다운로드하고 내가 설치 한 것 같다. 어쨌든 나는 컬링 작업을 시도했고 약간의 오류가있었습니다 (npm ERR! /usr/local/lib/node/.npm/.cache/npm/0.3.18/package.tgz를 만들 수 없습니다) npm ERR! tarball 생성 실패). MongoDB를 설치하고 서버를 시작하는 것에 대한 조언을 주셔서 감사합니다. 나는 그것이 몽구스에 이미 내장되어 있다고 생각했습니다. – Masiar

+0

@Masiar는'sudo curl'과'sudo npm'을합니다. 내가'require.paths'를 사용할 때 당신을 좋아하지 않는다고 언급했듯이, 나는 직접 문제를 겪었고'npm'을 사용하는 것에 전념한다. – Raynos

+0

sudo로 cURLing을 시도했지만 동일한 오류가 발생했습니다. npm ERR! /usr/local/lib/node/.npm/.cache/npm/0.3.18/package.tgz npm ERR!을 (를) 만들 수 없습니다. 타르볼을 만들지 못했습니다. npm ERR! /var/folders/EM/EMWiGx5-FK8FxV6+BNs-L++++TI/-Tmp-/npm-1303554226811/1303554226811-0.20846882415935397/contents/package를/usr/local/lib/node /에 압축 할 수 없습니다. npm/.cache/npm/0.3.18/package.tgz – Masiar

관련 문제