Skip to content

dreamFlyingCat/mongoose-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

官方原版:http://mongoosejs.com/docs/guide.html

版权声明:本文为博主辛苦翻译,未经博主允许不得转载。

mongoose v5.0.12 中文API

概要

本文将覆盖所有的Mongoose官网内容,包括schema和API部分。整体上文章结构与官网相同,契合度争取百分百。希望阅读的小伙伴能够给个星鼓励下笔者的辛苦,谢谢!

新手入门

首先请确定你已经安装了mongoDBNode.js。 接下来使用npm安装mongoose。

$ npm install mongoose

假设我们喜欢毛绒绒的猫咪,想要在mongoDB中记录我们遇见过的每一只猫咪。首先我们要在项目中引入mongoose并且连接到运行在本地MongoDB实例上的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() {
// we're connected!
});

一旦我们发起连接,回调函数会被调用。简洁起见,我们假定下面的代码都写在回调函数中。

在Mongoose中,所有事物都源于模式。参考下面的代码定义kittens。

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

目前为止,我们创建了一个schema,它只有一个属性——字符串类型的name。下一步要将schema编译为一个Model

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

model是一个class用于构造documents。在这种情况下,每个document都是Kitten的实例,都拥有在schema中声明的属性和行为。让我们创建一个document来代表在路边遇到的一只猫咪。

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

猫咪可以喵喵叫,我们学习如何给document添加"speak"功能:

// 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);

将方法函数添加到schema实例的methods属性上,方法会被编译到Model的原型上从而让每个实例document都可以访问该方法。

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

这样猫咪就可以说话啦!到现在我们还没有向mongoDB中保存任何的数据,调用document的save方法保存文档。如果报错,错误对象会包含在回调函数的第一个参数中。

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

我们可以通过操作Kitten Model查看曾经遇到过的所有猫咪的文档。

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

我们将mongoDB中所有的猫咪文档全部打印出来了,我们也可以通过名字过滤猫咪,mongoose支持mongoDB丰富的查询语法。

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

上例中会查询所有名字以'fluff'开头的猫咪,并将结果放在数组中返回给回调函数。

Congratulations

快速入门到此结束。现在我们成功的创建了一个schema并添加了一个自定义的实例方法,使用Mongoose在MongoDB中保存并查询了kittens的文档。进阶学习前往查看guide或者API文档

下一章 —— mongoose指南

About

mongoose v5.0.12 中文API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published