2011-04-23 65 views
0

嘿所有, 我對mongodb,mongoose和node.js很新。我想創建一個小演示來看看貓鼬是如何工作的。安裝(和測試的correctes)的node.js我下載貓鼬和後嘗試下面的代碼(也提供了貓鼬網站):設置Mongoose提供演示不工作

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) 

現在,我要再次說,我真的很新的這一點,所以我稱之爲「貓鼬+節點測試」文件夾,裏面有隻包含了一堆的JavaScript文件的貓鼬文件夾,當然還有myfile.js。我可能錯過了什麼?

回答

1

在新版本中,您不需要使用.Mongoose

只需更換如下:

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

有:

var mongoose = require('mongoose')

+0

它沒有工作:(。 – Masiar 2011-04-23 10:23:10

+1

是的,這將是後面的一步。現在很明顯,你的NPM沒有正確安裝。之後你必須安裝貓鼬,然後來這個。 – neebz 2011-04-23 10:57:52

+0

我做了一切,它仍然不起作用:/。現在不知道該去哪裏了 – Masiar 2011-04-23 11:45:36

3

它找不到貓鼬。處理這個問題的最簡單方法是通過npm進行安裝。

要intall NPM:

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

要安裝貓鼬:

npm install mongoose

您還可以下載和安裝的MongoDB並啓動MongoDB的服務器。

unix quickstart將幫助您安裝,運行和測試mongoDB。

您的主要問題是require.paths不應該被編輯。你應該直接要求一個url或者通過一個包系統。在nodejs docs中表示應該避免require.paths

就我個人而言,我會建議你堅持npm,因爲它是因素的標準。

+0

感謝您的快速回復!我已經有主題中所述的貓鼬,我下載了它,並且我猜也安裝了。無論如何,我嘗試了curl操作,並且出現了一些錯誤(npm ERR!無法創建/usr/local/lib/node/.npm/.cache/npm/0.3.18/package.tgz npm ERR!無法創建tarball )。感謝您安裝MongoDB並啓動服務器的提示,我認爲它已經嵌入貓鼬中。 – Masiar 2011-04-23 10:06:35

+0

@Masiar做'sudo curl'和'sudo npm'。就像我提到的那樣,當你使用'require.paths'時,它不喜歡你,我自己也有問題,我只是堅持使用'npm'。 – Raynos 2011-04-23 10:07:40

+0

我用sudo試過cURLing,但是我得到了同樣的錯誤:npm ERR!無法創建/usr/local/lib/node/.npm/.cache/npm/0.3.18/package.tgz npm ERR!無法創建tarball。 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 /包。tgz – Masiar 2011-04-23 10:24:48