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);
})();