mongoose学习笔记1:起步

作者: 8b9a7eb5887b | 来源:发表于2018-11-12 17:35 被阅读7次

    首先你需要确保你的电脑已经安装了 MongoDBNode.js

    接着在命令行工具使用 npm 安装 Mongoose

    $ npm install mongoose
    

    现在,假设我们很喜欢猫,并且希望在 MongoDB 中记录下我们遇见过的每一只猫。那么我们首先要做的就是在我们的项目中引入 mongoose ,然后创建实例用于连接 MongoDB 中一个名为 test 的数据库。

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost:27017/test');
    

    我们已经连接了本地的数据库,现在我们希望在连接成功或者连接失败时,能够收到通知信息:

    mongoose.connection.on('error', function (err) {
      console.info('connection error:', err);
    });
    mongoose.connection.once('open', function () {
      // 连接成功!
    });
    

    每当数据库连接成功时,我们的回调函数将会被调用。为了简洁起见,接下来的代码都默认写作这个回调函数里。

    在 Mongoose 中,一切事物都源于一个 Schema 。下面我们声明一个 Schema 用来描述我们的猫:

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

    很好,现在我们有了一个带有 name 属性的 Schema 。下一步,我们需要将 Schema 编译成一个 Model

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

    一个 Model 就是我们用于构建 MongoDB 文档的类。在这个例子中,每一个 Model 实例(也称为 “文档” )都将表示一只带有我们在 Schema 中声明的属性和方法的猫。现在,我们就可以创建一个 Model 实例,用来表示我们在路上遇见的猫了:

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

    每一只猫都会叫,那么让我们来看看,如何给我们的 Model 实例添加一个叫 "speak" 的方法吧:

    // 注意:所有的方法都应在使用 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);
    

    方法被添加在 Schema 的 methods 属性上,编译后被添加在 Model 的原型中,每一个 Model 实例都可以调用:

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

    直到目前为止,我们还没有向 MongoDB 保存任何数据。我们可以调用 Model 实例的 save 方法,将每一个 Model 实例保存到 MongoDB 里。如果在这过程中出现错误,那么回调函数的第一个参数则是报错信息:

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

    随着时间的流逝,我们想看看被保存在数据库中的猫。那么我们可以通过使用 Model 的 find 方法来查找所有被保存在数据库中的猫:

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

    现在我们已经将数据库中所有的猫打印在控制台中,那么如果你想通过猫的 name 属性来过滤掉部分数据,Mongoose 也支持 MongoDB 中丰富的查询语法:

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

    上面演示的,就是查询所有 name 属性是以 "fluff" 开头的文档,它将以数组的形式,被传入到 callback 函数中。

    直到这里,我们已经通过使用 Mongoose 创建了一个 Schema,添加了一个自定义的 Methods 方法,将 Model 实例保存在 MongoDB 中并进行查询。下一篇文章中,我们将展开更深入的学习。更多详细教程,可以访问 mongoose 官网进行学习。

    相关文章

      网友评论

        本文标题:mongoose学习笔记1:起步

        本文链接:https://www.haomeiwen.com/subject/obucfqtx.html