forked from Automattic/mongoose
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.jade
119 lines (118 loc) · 5.23 KB
/
index.jade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
doctype html
html(lang='en')
head
meta(charset="utf-8")
meta(name="viewport", content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")
title Mongoose Quick Start v#{package.version}
link(href='http://fonts.googleapis.com/css?family=Anonymous+Pro:400,700|Droid+Sans+Mono|Open+Sans:400,700|Linden+Hill|Quattrocento:400,700|News+Cycle:400,700|Antic+Slab|Cabin+Condensed:400,700', rel='stylesheet', type='text/css')
link(href='/docs/css/default.css', rel='stylesheet', type='text/css')
link(href='/docs/css/guide.css', rel='stylesheet', type='text/css')
style.
body.api
a#forkbanner(href="http://github.com/learnboost/mongoose")
img(style="position: absolute; top: 0; right: 0; border: 0;", src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png", alt="Fork me on GitHub")
#links
#header
h1
a(href="../index.html")
.mongoose Mongoose
include includes/nav
#content
.module
h2 Getting Started
p
em
| First be sure you have
a(href="http://www.mongodb.org/downloads") MongoDB
| and
a(href="http://nodejs.org/") Nodejs
| installed.
p
| Now say we like fuzzy kittens and want to record every kitten we ever meet in MongoDB.
| The first thing we need to do is include mongoose in our project and open a connection.
:js
var mongoose = require('mongoose')
, db = mongoose.createConnection('localhost', 'test');
p We have a pending connection object to the test database running on localhost. We now need to get notified if we connect successfully or if a connection error occurs:
:js
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
// yay!
});
p Once our connection opens, our callback will be called. For brevity, let's assume that all following code is within this callback.
p
| With Mongoose, everything is derived from a
a(href="./api.html#schema_Schema") Schema
| . Let's get a reference to it and define our kittens.
:js
var kittySchema = new mongoose.Schema({
name: String
})
p
| So far so good. We've got a schema with one property,
code name
| , which will be a
code String
| . The next step is compiling our schema into a
a(href="./api.html#model_Model") model
| .
:js
var Kitten = db.model('Kitten', kittySchema)
p
| A model is a class with which we construct documents.
| In this case, each document will be a kitten with properties and behaviors as declared in our schema.
| Let's create a kitten document representing the little guy we just met on the sidewalk outside:
:js
var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'
p Kittens can meow, so let's take a look at how to add "speak" functionality to our documents:
:js
kittySchema.methods.speak = function () {
var greeting = this.name
? 'Meow name is ' + this.name
: 'I don't have a name'
console.log(greeting);
}
var Kitten = db.model('Kitten', kittySchema)
p
| Functions added to the
code methods
| property of a schema get compiled into the Model prototype and exposed on each document instance:
:js
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"
p
| We have talking kittens! But we still haven't saved anything to MongoDB.
| Each document can be saved to the database by calling its
code save
| method. The first argument to the callback will be an error if any occured.
:js
fluffy.save(function (err) {
if (err) // TODO handle the error
console.log('meow')
});
p
| Say time goes by and we want to display all the kittens we've seen.
| We can access all of the kitten documents through our Kitten model.
:js
Kitten.find(function (err, kittens) {
if (err) // TODO handle err
console.log(kittens)
})
p
| We just logged all of the kittens in our db to the console.
| If we want to filter our kittens by name, Mongoose supports MongoDbs rich querying syntax.
:js
Kitten.find({ name: /fluff/i }, callback)
p
| This performs a case-insensitive search for all documents with a name property containing "fluff" and returns the results to the callback.
h3 Congratulations
p
| That's the end of our quick start. We created a schema, added a custom document method, saved and queried kittens in MongoDB using Mongoose. Head over to the
a(href="guide.html") guide
| , or
a(href="api.html") api docs
| for more.
script.
document.body.className = 'load';
include includes/googleanalytics