跳至主要內容

如何將 Mongoose 與 Deno 搭配使用

Mongoose 是一個熱門的基於架構的函式庫,可用於為 MongoDB 建模資料。它簡化了 MongoDB 驗證、轉換和其他相關業務邏輯的撰寫。

本教學課程將向您展示如何使用 Deno 專案設定 Mongoose 和 MongoDB。

檢視原始碼查看影片指南

建立 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://127.0.0.1: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

成功了!

處理資料

讓我們在 /model/Dinosaur.ts 中為我們的 Dinosaur 架構新增一個實例 方法

// ./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.

Boom!

如需有關如何使用 Mongoose 的更多資訊,請參閱 其文件