使用提供的演示设置Mongoose不起作用

时间:2011-04-23 09:51:20

标签: javascript node.js mongoose

嘿所有, 我是mongodb,mongoose和node.js的新手。我想创建一个小演示,看看mongoose是如何工作的。安装(并测试更正)node.js后,我下载了mongoose并尝试了以下代码(也在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)

现在,我必须再说一遍,我对此非常陌生,所以我的文件夹名为“mongoose + node test”只在mongoose文件夹里面,其中包含一堆JavaScript文件,当然还有myfile.js。我可能错过了什么吗?

2 个答案:

答案 0 :(得分:3)

找不到猫鼬。处理此问题的最简单方法是通过npm安装它。

要安装npm:

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

安装mongoose:

npm install mongoose

您还必须下载并安装mongoDB并启动mongoDB服务器。

unix quickstart将帮助您安装,运行和测试mongoDB。

您的主要问题是不应编辑require.paths。您应该直接要求网址或通过包裹系统。在nodejs docs中,应避免使用require.paths

就我个人而言,我建议你坚持使用npm因为它是去因素标准。

答案 1 :(得分:1)

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

只需替换以下内容:

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

使用:

var mongoose = require('mongoose')