mongoose使用快速入门案例

来源:luqidong 发布时间:2013-11-28 19:45:27 点击数:

首先你要安装node和mongodb

然后安装mongoose使用npm install 命令

$ npm install mongoose

然后我们加载mongoose模块然后,创建数据库连接,这里我们连接本地数据库test

// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

连接好之后我们需要知道一些连接信息比如是否连接上去了,第一次连接是否成功,:

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  // yay!
});

一旦连接上去了我们就执行下面代码来告诉使用者我们已经连接上去了

var kittySchema = mongoose.Schema({
    name: String
})

到目前为止,一切都很好。我们已经有了一个模式与一个属性,名称,这将是一个字符串。下一步是编译我们的架构成一个模型。

var Kitten = mongoose.model('Kitten', kittySchema)

模型是与我们构建文件的类。在这种情况下,每个文档将与性能和在我们的模式中声明的行为小猫。让我们创建一个代表,我们只是在人行道上遇见外面的小家伙一只Kitten:

var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'

这只小猫可以喵,我们给他添加说话功能

// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function () {
  var greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name"
  console.log(greeting);
}

var Kitten = mongoose.model('Kitten', kittySchema)

添加到架构的方法,属性函数被编译成模型和原型暴露在每个文档实例:

var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"

我们谈论的小猫!但是,我们还没有节省什么的MongoDB。每个文件可以通过调用其Save方法可以保存到数据库中。第一个参数的回调将是一个错误。

fluffy.save(function (err, fluffy) {
  if (err) // TODO handle the error
  fluffy.speak();
});

说时间的推移,我们要显示我们所见过的小猫。我们可以通过我们的小猫模型访问所有的小猫文件。

Kitten.find(function (err, kittens) {
  if (err) // TODO handle err
  console.log(kittens)
})

我们只是记录了所有在我们的数据库中的小猫到控制台。如果我们想通过名称来过滤我们的小猫,mongoose支持MongoDB丰富的查询语法。

Kitten.find({ name: /^Fluff/ }, callback)

这个执行搜索与开头的/^Fluff/,并将结果返回给回调的名称属性的所有文件。