設置 MongoDB 與 Koa.js
我正在建設一個 Koa.js 服務器,並需要將其連接到 MongoDB 以儲存和檢索數據。以下是如何在幾個簡單的步驟中實現這一點:
步驟1:初始化 Koa 應用程序之前連接到數據庫
const initDB = require("./database")
initDB()
const app = new Koa()
在 database.js
中,導入 mongoose。同時確保使用 npm install --save mongoose
進行安裝。Mongoose 是一個物件數據建模(ODM)庫。
const mongoose = require("mongoose")
import { connectionString } from "./conf/app-config"
const initDB = () => {
mongoose.connect(connectionString)
mongoose.connection.once("open", () => {
console.log("Connected to the database")
})
mongoose.connection.on("error", console.error)
}
module.exports = initDB
接下來,為您的連接字符串創建配置:
export const connectionString =
"mongodb+srv://" +
secret.mongodb.username +
":" +
secret.mongodb.password +
"@xxxxxx.mongodb.net/test?retryWrites=true&w=majority"
您可以運行本地 MongoDB 實例,或者使用 MongoDB Atlas 並將其託管在 AWS 雲上。您會在那裡找到包含在配置文件中的連接字符串。
步驟2:在 Koa 中創建一個 Schema
例如,讓我們在 /models/users.js
中創建一個用戶模式。
const mongoose = require("mongoose")
const Schema = mongoose.Schema
const UserSchema = new Schema({
username: String,
email: String,
picture: String,
})
module.exports = mongoose.model("User", UserSchema)
步驟3:創建一個服務來查詢數據
假設我們有一個 /service/user.service.js
。
import User from "../models/users"
export const getUserFromDb = async username => {
const data = await User.findOne({ username })
return data
}
export const createUserInDb = async user => {
const newUser = new User(user)
await newUser.save()
return user
}
步驟4:在 Koa 控制器中調用服務
例如,假設我們有一個 /controller/user.controller.js
。
import { getUserFromDb, createUserInDb } from '../service/user.service';
static async getUser(ctx) {
const user = await getUserFromDb(ctx.query.username);
ctx.body = user;
}
static async registerUser(ctx) {
const user = await createUserInDb(ctx.request.body);
ctx.body = user;
}
最後,您可以使用控制器註冊路由。現在,您應該能夠看到數據被存儲在數據庫中。如果您有任何問題,請隨時聯繫我。