下面是根据官网文档quick start的范例敲了一遍代码,然后附加一些解释
//首先npm下载mongoose并且保证mongodb已经下载,服务器已经运行
//接下来是获取mongoose模块
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:28001/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
//如果看到控制台的信息说明我们连接成功并且打开了数据库
db.once('open', function () {
console.log('mongoose is open!')
});
//Schema是mongoose的数据格式的设置,一切基于Schema.
//这里设置了一个数据为string的name
var kittySchema = mongoose.Schema({
name: String
});
//我们还能为此数据库设置回调函数
kittySchema.methods.speak = function () {
var greeting = this.name
? 'Meow name is ' + this.name
: 'I dont have name';
console.log(greeting);
}
//这里的Kitten在mongoDB里面是一个document的类
//而括号里面的kitten是一个集合collection
//有趣的是括号里的kitten是单数。
//但是存储到数据库里面的collection会自动变成复数kittens.
//如果你的代码里面写的集合名字是person,那么数据库里面名字则是people
//这些你可以在下面的客户端展示里面看到
//这只能是在methods后面设置
var Kitten = mongoose.model('kitten', kittySchema);
//设置一条叫fluffy的数据,这是Kitten document 类的一个实例。
var fluffy = new Kitten({ name: 'fluffy' });
//保存此数据,并且保存成功后触发回调函数
fluffy.save(function (err, fluffy) {
if (err) return console.log(err);
fluffy.speak();
});
//可以通过正则表达式找到此数据并且触发回调函数
Kitten.find({ name: /^fluff/ }, function (err, kittens) {
if (err) return console.log(err);
console.log(kittens);
console.log(kittens[0].name);
})
我们先注释掉Kitten.find这个函数, 看下控制台的结果:
这里显示open()已经废弃,可以在新版本用openUri取代
接下来我们注释掉fluffy.save函数,然后看看查找结果,
我们找到了这条数据,此数据是以数组形式存在的,所以要得到里面的值的话,要用访问数组的方式来。
我们用mongoDB客户端来看下里面的数据长什么样,这里用的是Robo 3T
这里看到 :
- test是一个db
- kittens 是一个集合
- fluffy是一条document (客户端中未显示)