嘿所有, 我是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。我可能错过了什么吗?
答案 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')