node.js搭建后台基本流程
前言
若文章有误,欢迎读者留言反馈只需一篇就能学会node.js搭建后台基本流程
数据库准备工作和插件安装【提前创建好项目文件夹】
在终端启动mongoDB服务器,进入mongoDB交互式shell
mongo
创建数据库[切换数据库]
use 数据库名
use切换数据库时,若库存在则切换,如果数据库不存在则创建并切换
use创建的数据库只是一个空的数据库,没有集合,所以show dbs
不显示空数据库。
可以使用db
命令来查看当前所在的数据库名称:db
- 创建表并插入几条数据
==表是不需要先行进行定义的==,当我们往一个表中插入记录后,表就自动出来了。
JSON格式数据:不是严格意义上的json数据,key名可以不使用引号包裹
1 | db.表名/集合名.insert(JSON格式数据) |
查看数据
db.表名加上s.find()
- 安装express+Mongoose+art-template模板引擎(默认你已经安装好了nodejs和express)
1 | // 全局安装express |
- 包管理文件【package.json,这里选择快捷方式】
1
npm init -y
- 安装依赖
1
npm i
- 安装Mongoose 模块[连接数据库的模块]
1 | // 进入当前项目根目录,输入: |
express操作mongodb
- 创建服务
- 查询数据,拿到数据
- 定义模板页面用来渲染查询的数据
先跑通前后端
1
2
3
4
5
6
7
8
9
10 // 引入express模块
const express = require('express')
// 创建服务实例
const app = express()
// 监听请求
app.get('/user', (req, res) => {
res.send('hello world')
})
// 启动服务
app.listen(8080, () => console.log('your server running at http://locahost:8080'))连接数据库
1
2
3
4
5
6
7
8
9
10 const mongoose = require('mongoose')
// 参数 mongodb关键词 localhost是数据ip地址 27017是默认端口号 members链接的库
mongoose.connect('mongodb://localhost:27017/members')
// 定义表结构
const demoSchema = new mongoose.Schema({
id:Number, //key是表的字段 value是字段的类型
age:Number,
sex:String,
name:String
})定义Model
1
2
3
4 // 参数1 是Model的名称
// 参数2 上面的表结构 schema
// 参数3 是对应的表名称,可以省略,不写的话默认就是model名称的复数形式。
const model = mongoose.model('demoModel',demoSchema,'demo')监听请求里操作数据库,并把数据返回给前端
1 | // find默认是查询所有数据,后面可以跟条件,.then可以拿到回调的数据,data就是数据 |
整合
1 | /* |
mongoDB操作命令
mongo操作
- mongo进入数据库
- show dbs 显示所有的库
- db 显示当前所在的库
- use 库名 切换数据库,创建数据库
- db.表名.insert(json数据) 在某个表当中插入一条数据。
- show tables 查看所有表
- db.表名.drop() 删除某一个表
- db.dropDatabase() 删除当前库,清空数据库,但是库名还在。
增删改查- 增
db.表名.insert(json数据) 添加一条 insertOne
db.表名.insert([json1,json2]) 添加多条 insertMany- 删除
db.表名.deleteOne({key:value}) 删除一条,满足条件的第一条被删除。
db.表名.deleteMany({key:value}) 删除多条,只要满足条件就被删除。- 修改
db.表名.updateOne({条件},{$set:{json数据}}) 修改的时候,如果字段包含就修改,不包含就添加字段。
db.表名.updateMany({条件},{$set:{json数据}}) 修改多条数据,只要满足条件就会被修改- 查询
db.表名.find(条件) 按条件查询- 获取总条数
db.表名.find().count() 获取总条数- 分页
db.表名.find().skip(开始下标).limit(截取数据的个数)