Начало работы
Сначала убедитесь, что у вас установлены 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