使用脚手架, 搭建 koa2 项目,定义数据模型,实现数据库的增删改查

61 阅读1分钟

mongoose 可以提供这种规范, 用 Schema 定义数据格式的规范, 用 Model 规范 collection, 还可以规范数据操作的 api

先使用脚手架, 搭建 koa2 项目, 然后添加 mongoose

koa2 koa2-demo

npm i

npm i mongoose

>项目搞定之后, 新建`db\index.js``

// 数据库设置

const mongoose = require("mongoose");
const url = "mongodb://localhost:27017";
const dbName = "message-board";

// 开始连接

mongoose.connect(`${url}/${dbName}`);

const conn = mongoose.connection;

conn.on("error", (err) => console.log(err));
module.exports = mongoose;

我们开始定义数据格式db\model.js

const mongoose = require("./index");

// 定义Schema
const UserSchema = mongoose.Schema(
	{
		username: {
			type: String, // 字符串类型
			required: true, // 必传, 必写
			unique: true, // 唯一, 去重
		},
		age: {
			type: Number, // 数字类型
			default: 0, // 可以不传, 默认值是0
		},
		password: {
			type: String,
			required: true, // 必传
		},
		email: {
			type: String,
			default: "", // 默认为空
		},
		gender: {
			type: String,
			default: "male", // male female, 默认male
		},
	},
	{
		timestamps: true, // 配置, 自动添加时间戳, 用来记录数据的创建时间, 和修改时间
	}
);
// 定义Model, 第一个参数, 对应collection的单数,比如collection是users, 第一个参数就是user, 第二个是对应的规则
const User = mongoose.model("user", UserSchema);

// 导出
module.exports = {
	User,
};

数据增删改查

编写db/test.js进行增删改查, node 运行即可

新增

// db\test.js
const { User } = require("./model");
!(async () => {
	// 新增数据
	const lisi = await User.create({
		username: "lisi",
		password: "123456",
		age: 23,
	});
	console.log(lisi);
})();

查询数据

const { User } = require("./model");
!(async () => {
	// 查询数据
	const userList = await User.find();
	console.log(userList);
})();

更新数据

// db\test.js
const { User } = require("./model");
!(async () => {
	// 更新数据, 找到lisi, 把年龄age改成44
	const updateResult = await User.findOneAndUpdate(
		{ username: "lisi" }, // 查询条件
		{ age: 44 }, // 更新的内容
		{ new: true } // 返回更新后的数据
	);
	console.log(updateResult);
})();

删除数据

// db\test.js
const { User } = require("./model");
!(async () => {
	// 删除数据, 找到zhangsan-2, 删掉
	const deleteResult = await User.deleteOne(
		{ username: "zhangsan-2" } // 查询条件
	);
	console.log(deleteResult.deletedCount);
})();