Nodejs使用Mongoose对MongoDB建模与关联

启动Mongodb数据库 (Mac)

sudo mongod

实验前提

  1. 实验环境 :MacOS;
  2. 使用工具 :Vscode

所需基础

nodejs包管理基础

mongoose简单语法

即使上面基础缺失,本文任有大量的注释及解释帮助理解。

概要

通过编写实验文件完成使用Mongoose管理工具对MongoDB数据库对建模以及关联

实验开始

安装必要包文件

1.终端新建文件夹 : Mongoose

mkdir Mongoose

2.初始化

npm init

3.安装Mongoose管理工具

npm i mongoose 

或:npm install mongooes

新建运行文件 serve.js,使用mongoose对数据库建模

//引入包文件
const mongoose = require('mongoose')
//链接数据库
mongoose.connect("mongodb://localhost:27017/mongo-relation",{ useUnifiedTopology: true,useNewUrlParser: true  })
//建立数据库模型
const post = mongoose.model('Post',new mongoose.Schema({
    title: {type : String},
    body: {type: String,}
}))
//异步操作数据库,并插入数据验证
async function main(){
    await post.insertMany([
        {title:'this is one title',body:'this is one body'},
        {title:'this is two title',body:'this is two body'},
    ])
    const posts = await post.find()
    console.log(posts) 
}
//执行输出结果
main()

各代码作用详情看注释

关联数据库前建立类型数据库

async function main(){
await Category.insertMany([{
    name:'nodejs'
},
{
    name:'vuejs'
}])


console.log(await Category.find())

}
main()

关联数据库

const mongoose = require('mongoose')

mongoose.connect("mongodb://localhost:27017/mongo-relation",{ useUnifiedTopology: true,useNewUrlParser: true  })
const Category = mongoose.model('Category', new mongoose.Schema({
    name: {type:String}
}))
const Post = mongoose.model('Post',new mongoose.Schema({
    title: {type : String},
    body: {type: String},
    category: {type: mongoose.SchemaTypes.ObjectId, ref:'Category'}
}))
async function main(){
await Category.insertMany([{
    name:'nodejs'
},
{
    name:'vuejs'
}])
const cat1 = await Category.findOne({name:'nodejs'})
const post1 = await Post.findOne({title:'this is one title'})
const post2 = await Post.findOne({title:'this is two title'})
post1.category = cat1
post2.category = cat1
await post1.save()
await post2.save()
const posts = await Post.find()
console.log(posts)

}
main()

输出结果

在这里插入图片描述
关键点总结

  • 操作数据库需要使用异步
  • 需要对数据库进行 保存

本文其中例子来自网络教程,并进行归纳总结,笔者才学疏浅,若有错误之处欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值