Spec-Zone.ru › Mongoose

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

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

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

npm install mongoose --save

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

// getting-started.js
const mongoose = require('mongoose');

main().catch(err => console.log(err));

async function main() {
  await mongoose.connect('mongodb://127.0.0.1:27017/test');

  // use `await mongoose.connect('mongodb://user:password@127.0.0.1:27017/test');` if your database has auth enabled
}

Для краткости предположим, что весь последующий код находится в функции main().

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

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

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

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

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

const 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 speak() {
  const greeting = this.name
    ? 'Meow name is ' + this.name
    : 'I don\'t have a name';
  console.log(greeting);
};

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

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

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

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

await fluffy.save();
fluffy.speak();

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

const kittens = await Kitten.find();
console.log(kittens);

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

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

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

Поздравляем

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

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

Spec-Zone.ru

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