Как использовать 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