前端

mongoose中文文档

2017-09-21  本文已影响845人  suporka

本人编译官方教程部分内容,括号中内容为个人见解,转载请注明出处,谢谢

开始

$ npm install mongoose

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

(在入口文件中引入mongoose)

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)
var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'

我们看看如何增加一个 speak 功能到我们的 document 中去

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

◆◆◆
(◆◆◆之间的内容应该写在一个model类型的js文件中)

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

(这部分内容应于路由的回调中定义)

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

Schemas

定义你的 schema
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var blogSchema = new Schema({
  title:  String,
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
});

如果你之后想增加额外的 keys ,请使用 schema#add 方法

我们 blogSchema 中的每个 key 在 document 中定义了一个转化为与其相关的 SchemaType 的方法。例如。我们定义了一个被转化为字符串 SchemaType 的‘title’以及一个被转化为 Data SchemaType 的 'date'。keys 也可以为包含更多内部key的对象,如例子中的 meta 。

SchemaTypes 有:

创建一个 model

在使用schema 之前,我们需要将 blogSchema 转化成一个我们可以操作的 model,我们通过 mongoose.model(modelName, schema)转化它

var Blog = mongoose.model('Blog', blogSchema);
// ready to go!
实例方法
上一篇 下一篇

猜你喜欢

热点阅读