express(5)—mongodb基础

1、在node中安装一个可以连接mongodb数据库的工具mongoose

安装mongoose命令: npm i mongoose

image.png

2、在server.js中l连接mongodb数据库

2.1、引入mongoose模块: const mongoose = require('mongoose')
2.2、连接mongodb数据库:mongoose.connect('mongodb://localhost:27017/express-test')

//1、引入express模块
const express = require('express');
//2、创建web服务器
const app = express();

// 1、引入mongoose模块
const mongoose = require('mongoose')
// 2、连接mongodb数据库
//  因为装在本地,所以使用localhost或http://127.0.0.1也可以
//                         mongodb://   数据库ip地址   :(默认端口号:27017) /数据库名称
//                             ↓             ↓           ↓                    ↓
// 固定格式mongoose.connect('mongodb://  localhost     :27017            /express-test')
mongoose.connect('mongodb://localhost:27017/express-test')

// 使用app.use(引入cors包)  因为引入的cors包是一个函数,所以直接调用
app.use(require('cors')())

// 使用app.use托管静态资源,通过express.static('静态资源目录,一般叫public')
// 访问public里面的静态资源一定要通过/static文件夹下才能访问
app.use('/',express.static('public'))

// 3、注册路由
app.get('/product',function(req,res){
  res.send([
    {id:1,title:'apple'},
    {id:2,title:'banner'},
    {id:3,title:'lemon'}
  ])
});
//4、设置端口
app.listen(3000,()=>{
  console.log('App listening on port 3000!')//服务器启动后会打印这句话
})

3、启动server.js,发现有两个警告

image.png

4、在server.js中添加两个参数{ useNewUrlParser: true,useUnifiedTopology: true }即可

//1、引入express模块
const express = require('express');
//2、创建web服务器
const app = express();


// 1、引入mongoose模块
const mongoose = require('mongoose')
// 2、连接mongodb数据库
//  因为装在本地,所以使用localhost或http://127.0.0.1也可以
//                         mongodb://   数据库ip地址   :(默认端口号:27017) /数据库名称
//                             ↓             ↓           ↓                    ↓
// 固定格式mongoose.connect('mongodb://  localhost     :27017            /express-test')
mongoose.connect('mongodb://localhost:27017/express-test',{ useNewUrlParser: true , useUnifiedTopology: true })

// 使用app.use(引入cors包)  因为引入的cors包是一个函数,所以直接调用
app.use(require('cors')())

// 使用app.use托管静态资源,通过express.static('静态资源目录,一般叫public')
// 访问public里面的静态资源一定要通过/static文件夹下才能访问
app.use('/',express.static('public'))

// 3、注册路由
app.get('/product',function(req,res){
  res.send([
    {id:1,title:'apple'},
    {id:2,title:'banner'},
    {id:3,title:'lemon'}
  ])
});
//4、设置端口
app.listen(3000,()=>{
  console.log('App listening on port 3000!')//服务器启动后会打印这句话
})

5、再一次启动时已经没有任何警告了

image.png

6、创建一个产品表

6.1、通过mongoose.model建立一个模型来创建一个产品表

// 创建产品表 
// 通过mongoose.model建立一个模型,第一个参数为模型的名称 ,第二个参数为表结构
// 通过new mongoose.Schema({title:String})创建一个表结构,里面传递一个对象,对象中写字段/属性(即一个产品中有哪些属性)
const Product = mongoose.model('Product',new mongoose.Schema({
  //属性名:属性类型
    title:String
}))

6.2、为了测试,就在server.js插入多条数据,服务器启动后就需要把插入语句注释掉,防止多次执行,正常来说数据是从数据库中执行插入的


// 为了测试,通过insertMany向product插入3条数据
// 第一次执行后就已经插入了数据,所以需要注释掉,以免反复插入
Product.insertMany([
  {title:'产品1'},
  {title:'产品2'},
  {title:'产品3'}
])

6.3、当通过http://localhost:3000/product访问时,会去查找Product中的数据

app.get('/product',async function(req,res){
  // 每一次的数据库查询都是从node.js服务器里面去异步操作连接mongodb数据库,所以要加await
  // 只要使用await,外出的函数就需要添加async,因为await和async是成对使用的
  res.send(await Product.find())//通过find查找Product中的信息
});

访问结果:_id是mongodb往数据库存一条信息时会自动添加的一个id; __v是版本号

image.png

server.js整体代码:

//1、引入express模块
const express = require('express');
//2、创建web服务器
const app = express();

// 1、引入mongoose模块
const mongoose = require('mongoose')
// 2、连接mongodb数据库
//  因为装在本地,所以使用localhost或http://127.0.0.1也可以
//                         mongodb://   数据库ip地址   :(默认端口号:27017) /数据库名称
//                             ↓             ↓           ↓                    ↓
// 固定格式mongoose.connect('mongodb://  localhost     :27017            /express-test')
mongoose.connect('mongodb://localhost:27017/express-test',{ useNewUrlParser: true , useUnifiedTopology: true })

// 创建产品表 
// 通过mongoose.model建立一个模型,第一个参数为模型的名称 ,第二个参数为表结构
// 通过new mongoose.Schema({title:String})创建一个表结构,里面传递一个对象,对象中写字段/属性(即一个产品中有哪些属性)
const Product = mongoose.model('Product',new mongoose.Schema({
  //属性名:属性类型
    title:String
}))

// 为了测试,通过insertMany向product插入3条数据
// 第一次执行后就已经插入了数据,所以需要注释掉,以免反复插入
// Product.insertMany([
//   {title:'产品1'},
//   {title:'产品2'},
//   {title:'产品3'}
// ])

// 使用app.use(引入cors包)  因为引入的cors包是一个函数,所以直接调用
app.use(require('cors')())

// 使用app.use托管静态资源,通过express.static('静态资源目录,一般叫public')
// 访问public里面的静态资源一定要通过/static文件夹下才能访问
app.use('/',express.static('public'))

// 3、注册路由
app.get('/product',async function(req,res){
  // 每一次的数据库查询都是从node.js服务器里面去异步操作连接mongodb数据库,所以要加await
  // 只要使用await,外出的函数就需要添加async,因为await和async是成对使用的
  res.send(await Product.find())//通过find查找Product中的信息
});
//4、设置端口
app.listen(3000,()=>{
  console.log('App listening on port 3000!')//服务器启动后会打印这句话
})
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容