Spec-Zone.ru › Deno 2

Как использовать Mongoose с Deno

Mongoose — популярная библиотека на основе схем, которая моделирует данные для MongoDB. Она упрощает написание валидации MongoDB, преобразования и другой необходимой бизнес-логики.

Этот учебник покажет, как настроить Mongoose и MongoDB в вашем проекте Deno.

Просмотреть исходный код или посмотреть видео-руководство.

Создание модели Mongoose

Давайте создадим простое приложение, которое подключается к MongoDB, создает Dinosaur модель и добавляет и обновляет динозавра в базе данных.

Сначала создадим необходимые файлы и директории:

touch main.ts && mkdir model && touch model/Dinosaur.ts

В /model/Dinosaur.ts, мы импортируем npm:mongoose, определим [схему] и экспортируем её:

import { model, Schema } from "npm:mongoose@^6.7";

// Define schema.
const dinosaurSchema = new Schema({
  name: { type: String, unique: true },
  description: String,
  createdAt: { type: Date, default: Date.now },
  updatedAt: { type: Date, default: Date.now },
});

// Validations
dinosaurSchema.path("name").required(true, "Dinosaur name cannot be blank.");
dinosaurSchema.path("description").required(
  true,
  "Dinosaur description cannot be blank.",
);

// Export model.
export default model("Dinosaur", dinosaurSchema);

Подключение к MongoDB

Теперь, в нашем файле main.ts, мы импортируем mongoose и Dinosaur схему, и подключимся к MongoDB:

import mongoose from "npm:mongoose@^6.7";
import Dinosaur from "./model/Dinosaur.ts";

await mongoose.connect("mongodb://localhost:27017");

// Check to see connection status.
console.log(mongoose.connection.readyState);

Поскольку Deno поддерживает верхнеуровневые await, мы можем просто await mongoose.connect().

При выполнении этого действия мы должны получить лог 1:

$ deno run --allow-read --allow-sys --allow-env --allow-net main.ts
1

Ура!

Обработка данных

Давайте добавим метод метод в нашу Dinosaur схему в /model/Dinosaur.ts:

// ./model/Dinosaur.ts

// Methods.
dinosaurSchema.methods = {
  // Update description.
  updateDescription: async function (description: string) {
    this.description = description;
    return await this.save();
  },
};

// ...

Этот метод экземпляра, updateDescription, позволит обновить описание записи.

Вернемся в main.ts, и начнём добавлять и обрабатывать данные в MongoDB.

// main.ts

// Create a new Dinosaur.
const deno = new Dinosaur({
  name: "Deno",
  description: "The fastest dinosaur ever lived.",
});

// // Insert deno.
await deno.save();

// Find Deno by name.
const denoFromMongoDb = await Dinosaur.findOne({ name: "Deno" });
console.log(
  `Finding Deno in MongoDB -- \n  ${denoFromMongoDb.name}: ${denoFromMongoDb.description}`,
);

// Update description for Deno and save it.
await denoFromMongoDb.updateDescription(
  "The fastest and most secure dinosaur ever lived.",
);

// Check MongoDB to see Deno's updated description.
const newDenoFromMongoDb = await Dinosaur.findOne({ name: "Deno" });
console.log(
  `Finding Deno (again) -- \n  ${newDenoFromMongoDb.name}: ${newDenoFromMongoDb.description}`,
);

Запустив код, мы получим:

Finding Deno in MongoDB --
  Deno: The fastest dinosaur ever lived.
Finding Deno (again) --
  Deno: The fastest and most secure dinosaur ever lived.

Готово!

Для получения дополнительной информации об использовании Mongoose, пожалуйста, обратитесь к их документации.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/how_to_with_npm/mongoose

Spec-Zone.ru

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