npm i mongoose -s
const mongoose = require("mongoose");
mongoose.connect(dbURL);
const db = mongoose.connection;
db.on("error", () => {
console.log("链接失败");
});
db.on("open", () => {
console.log("链接成功");
});
Schema
Schema相当于MySql的表结构
通过定义Schema
来约束数据的类型,支持以下类型数据
类型 | 作用 |
---|---|
String | 定义字符串 |
Number | 定义数字 |
Date | 定义日期 |
Buffer | 定义二进制 |
Boolean | 定义布尔值 |
Mixed | 定义混合类型 |
ObjectId | 定义对象ID |
Array | 定义数组 |
Decimal128 | |
Map |
约束能用对象的方法描述数据类型 是否必须 是否重复 默认值 等,如下定义了一个用户表结构
注意:如果定义表结构时没有定义
_id
,mongoose会自己添加一个该字段,该字段不会重复,类型为ObjectId
,通过findById()
查询
const userSachem = new mongoose.Schema(
{
name: {
type: String,
required: true, //! 必须
},
email: {
type: String,
required: true,
unique: true, //! 不重复
},
passWord: {
type: String,
required: true,
},
avatar: {
type: String,
default: null, //! 默认值
},
bio: String, //! 默认没有可以不写
},
{
timestamps: true, //! 添加`createdAt updatedAt`创建时间和更新时间两个字段
}
);
如果在定义了结构后需要添加新字段,在实例上使用add()
方法
model
通过mongoose.model(name,sechem)
来创建表结构构造器,通过传入数据来实例化构造器获得具体的表
注意:在这一步的时候数据库已经有了表,表名全是小写且表明为name加上s,如这里会创建表
users
const User = mongoose.model("User", userSechem);
通过上面的操作就获得了表的构造函数,接下来就可以向里面进行增删改查了
有三种方法在表内增加数据:
实例化model
通过传入具体的数据来实例化表,能获得一条具体的表数据,类型为Mongoose Documents
,向数据库中查找到的也是这种类型数据
const user = new User(userData);
save
获得具体的表后只需要调用Model.prototype.save
就会把数据存入数据库中 注意:该方法为异步方法
await user.save();
Model.create
方法:通过表构造器的静态方法create
自动在表中插入新的数据
该方法可以接收多个插入数据,最后的回调函数参数根据数据量决定
该方法支持两种调用:
const users = await User.create(
{ name: "1", email: "123@qq.com", passWord: "123" },
{ name: "2", email: "456@qq.com", passWord: "456" },
{ name: "3", email: "789@qq.com", passWord: "789" }
);
res.status(200).json(users); // users是数组
// 或者
User.create(
{ name: "str", email: "159@163.com", passWord: "159" },
{ name: "1", email: "123@qq.com", passWord: "123" },
{ name: "2", email: "456@qq.com", passWord: "456" },
{ name: "3", email: "789@qq.com", passWord: "789" },
(err, doc1, doc2, doc3) => {
if (err) {
return err;
}
res.status(200).json({ doc1, doc2, doc3 });
}
);
Model.insertMany
方法该方法与create
的区别是它接收的第一个参数是数据组成的数组,多条数据只会插入第一条
const user = await User.insertMany({ name: "1", email: "123@qq.com", passWord: "123" });
const users = await User.insertMany([
{ name: "2", email: "456@qq.com", passWord: "456" },
{ name: "3", email: "789@qq.com", passWord: "789" },
]);
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。