Spec-Zone.ru › Mongoose

Начало работы

Сначала убедитесь, что у вас установлены MongoDB и Node.js.

Далее установите Mongoose из командной строки, используя npm.

$ npm install mongoose

Теперь предположим, что мы любим пушистых котят и хотим записывать каждого котенка, которого мы встречаем, в MongoDB. Первое, что нам нужно сделать, это включить mongoose в наш проект и открыть подключение к базе данных test на нашем локально работающем экземпляре MongoDB.

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

У нас есть ожидающее подключение к базе данных test, работающей на localhost. Теперь нам нужно получить уведомление, если подключение успешно установлено или произошла ошибка подключения:

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

После открытия подключения будет вызван наш обратный вызов. Для краткости предположим, что весь последующий код находится внутри этого обратного вызова.

В Mongoose все основано на схеме. Давайте получим ссылку на неё и определим наших котят.

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

Пока всё хорошо. У нас есть схема с одним свойством, name, которое будет String. Следующим шагом является компиляция нашей схемы в модель.

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

Модель — это класс, с помощью которого мы создаём документы. В данном случае каждый документ будет представлять котенка со свойствами и поведением, определёнными в нашей схеме. Давайте создадим документ котенка, представляющий маленького котенка, которого мы только что встретили на тротуаре снаружи:

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

Котята могут мяукать, поэтому давайте посмотрим, как добавить функциональность «говорить» к нашим документам:

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

Функции, добавленные к свойству methods схемы, компилируются в прототип Model и доступны в каждом экземпляре документа:

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

У нас есть говорящие котята! Но мы всё ещё ничего не сохранили в MongoDB. Каждый документ можно сохранить в базе данных, вызвав его метод save. В качестве первого аргумента обратного вызова передаётся ошибка, если она произошла.

Предположим, со временем мы захотим отобразить всех котят, которых мы видели. Мы можем получить доступ ко всем документам котят через нашу модель Kitten .

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

Мы только что вывели на консоль все котят в нашей базе данных. Если мы хотим отфильтровать котят по имени, Mongoose поддерживает богатый синтаксис запросов MongoDB .

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

Это выполняет поиск всех документов со свойством имени, начинающимся с «Fluff», и возвращает результат в виде массива котят в обратный вызов.

Поздравляем

Это конец нашего быстрого старта. Мы создали схему, добавили пользовательский метод документа, сохранили и запросили котят в MongoDB с помощью Mongoose. Перейдите к руководству или документации API для получения дополнительной информации.

© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/4.x/docs/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API