1. 快速入门

首先,要确定安装了 MongoDBNode.js

接下来,使用 npm 命令安装 mongoose :

$ npm install mongoose

现在加入我们喜欢 fuzzy kittens,想要将我们遇到的每只喵咪记录下在 MongoDB 中。我们需要做的第一件事是在我们的项目中包含 mongoose,并在本地运行的 MongoDB 实例上打开与测试数据库的连接。

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

我们有一个挂起的连接到本地主机上运行的测试数据库。如果我们连接成功或发生连接错误,我们现在需要得到通知:

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

一旦我们的连接打开,我们的回调将被调用。为简洁起见,我们假设以下所有代码都位于此回调中。

Mongoose,一切都是从 Schema 派生的。 让我们来引用它,并定义我们的小猫。

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

目前为止一切都很顺利。我们有一个属性——名称的 schema,这个属性将是一个字符串。 下一步是将我们的 schema 编译到模型中。

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

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

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

小猫可以喵喵叫,那么让我们来看看如何在我们的文档中添加 “speak” 功能:

// 注意: 在使用 mongoose.model() 编译之前,必须将 methods 添加到模式中
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。每个文档可以通过调用其保存方法保存到数据库中。回调的第一个参数将是一个错误,如果发生了任何错误的话。

fluffy.save(function (err, fluffy) {
  if (err) return console.error(err);
  fluffy.speak();
});

时间流逝,我们想要展示我们看到的所有的小猫。我们可以通过我们的 Kitten 模型来访问所有的小猫文档。

Kitten.find(function (err, kittens) {
  if (err) return console.error(err);
  console.log(kittens);
})

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

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

这将搜索名称属性以“fluff”开头的所有文档,并将结果作为小猫数组返回给回调。

祝贺!祝贺! 这是我们快速启动的结束。我们创建了一个模式,添加了一个自定义的文档方法,使用 Mongoose 在 MongoDB 中保存并查询了小猫。请转到指南API文档了解更多信息。

[info] 笔记

如上图所示

Schema 是所谓模式,类比可以是某个型号的汽车,这个型号的汽车有机动车车架号(唯一)、全景天窗,车长,扭矩,涡轮增压等等属性,并且有启动、刹车、加速等方法。

Model 是所谓模型,类比是这个特定型号的汽车的生产线,所有的汽车都在这里下线。

document 文档,类比则是某一辆具体的车,比如张三买了一辆,车牌号为:火A00000、李四买了一辆,车牌号为:火A88888。

如下图所示:

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-12-31 16:42:39

results matching ""

    No results matching ""