4. Mongoose–定义 Schema
在 db 文件夹中,新建 model.js 文件
// 数据模型 (规范数据格式)
const mongoose = require('./db')
// 定义 Schema (数据规范)
const UserSchema = mongoose.Schema({
username: {
type: String,
required: true, // 必须有
unique: true // 唯一,不重复
},
password: String,
age: Number,
city: String,
gender: {
type: Number,
default: 0 // 0 - 保密, 1 男,2 女
}
}, {
timestamps: true // 时间戳,自动添加文档的创建时间、更新时间等
})
// 定义 Model
const User = mongoose.model('user', UserSchema)
module.exports = {
User
}
新增和查询数据
新建 test1.js
// 使用 model 操作数据
const { User } = require('./model')
// 定义一个 async 的匿名函数,并执行。为了里面能用 await
!(async () => {
// 新增数据 - 1
// const zhangsan = new User({
// username: 'zhangsan',
// password: 'abc',
// age: 20,
// city: 'beijing',
// gender: 1
// })
// zhangsan.save()
// 新增数据 - 2
// const lisi = await User.create({
// username: 'lisi',
// password: '123',
// age: 23,
// city: 'shanghai'
// })
// console.log('lisi 创建完成', lisi)
// 查询列表数据,返回的是数组
// const userList = await User.find({ username: 'zhangsan' })
// const userList = await User.find().sort({ _id: -1 })
// console.log('userList 查询结果', userList)
// 查询单条数据,返回的是对象
const user = await User.findOne({ username: 'zhangsan' })
console.log('user 查询结果', user)
})()
更新和删除数据
新建 test2.js 文件
// 使用 model 操作数据
const { User } = require('./model')
// 定义一个 async 的匿名函数,并执行。为了里面能用 await
!(async () => {
// // 更新
// const updateResult = await User.findOneAndUpdate(
// { username: 'zhangsan' }, // 条件
// { age: 30 }, // 更新的内容
// {
// new: true // 返回更新后的数据
// }
// )
// console.log('更新的返回结果', updateResult)
// 删除
const removeResult = await User.remove({ username: 'lisi' })
console.log('删除的返回结果', removeResult)
})()