# mongoose
参考文章
# 基本概念
MongoDB
的存储模式大致上可以理解为我们前端中的JSON
.
// db
{
// collection
"collection-a": [
// document
{ "field-1": "string", "field-2": 100, "field-3": true, "field-4": [] }
],
"collection-b": []
}
moongoose
中一个document
的生成过程
- Schema(模式/模型骨架) 用来定义模型
- Model(模型) 用来管理一个集合, 应该相当于
数据表(collection/table)
- Entity(实体) 由
Model
创建出来的一个实例
, 应该相当于一条记录(document/row)
大概过程是
Schema -> Model -> Entity
# 安装 MongoDB (windows)
打开mongoDB 下载地址 (opens new window), 然后选择版本, 最后点击下载即可. 安装过程只需一路点击下一步
.
MongoDB 可视化管理工具 (opens new window)
# 在 koa 中使用
使用Mongoose (opens new window)可以让我们中nodejs
服务中连接并操作MongoDB
数据库.
- 新建一个空的
koa
项目 - 安装依赖
一个最简单的例子
const Koa = require("koa");
const KoaRouter = require("koa-router");
const cors = require("koa2-cors");
const mongoose = require("mongoose");
const app = new Koa();
const router = new KoaRouter();
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", function() {
console.log("mongodb ok");
});
// 连接数据库
// 本例中的数据库名称是 'test'
mongoose.connect("mongodb://127.0.0.1:27017/test", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// 定义 schema 和 model
const catSchema = new mongoose.Schema({ name: String });
const Cats = mongoose.model("cats", catSchema);
app.proxy = true;
app.use(cors());
router.get("/", (ctx) => {
ctx.body = {
msg: "hello koa",
};
});
router.post("/cats/add", async (ctx) => {
// 新增记录
const cat = await Cats.create({ name: `cat ${Math.random()}` });
ctx.body = {
msg: "ok",
data: cat,
};
});
router.get("/cats", async (ctx) => {
// 查询所有记录
const cats = await Cats.find();
ctx.body = {
msg: "ok",
data: cats,
};
});
app.use(router.routes());
app.listen(8000);