学习node.js,首先应该从一个框架开始学起,比如express,入门之后再慢慢深挖里面的其他功能。
1. 安装
`npm i express --save `
2. 使用
// 模块化引入express包
const express = require('express')
// 实例化
const app = express()
// 编写路由接口
app.get('/', function (req, res) {
res.send({ page: 'home' })
})
app.get('/about', (req, res) => {
res.send({ page: 'About us' })
})
app.get('/product', (req, res) => {
res.send([
{id: 1, title: 'Product A'},
{id: 2, title: 'Product B'},
{id: 3, title: 'Product C'},
])
})
// 启动 本地服务器4000 端口
app.listen(4000, () => {
console.log('App listening on port 4000! Please visit http://localhost:4000');
})
node server.js 启动服务器,代码更改,需要退出重启
nodemon server.js 启动并监听服务器,若代码保存更改,服务器数据会自动更新
3. 静态文件托管
// 表示所有'public'文件夹中的静态文件可以被直接访问,默认是根路径,
// 如 http://localhost:4000/index.html (index.html位于public文件夹里)
app.use(express.static('public'))
// 表示所有'public'文件夹中的静态文件必须要在url的/static路径下才能被访问
// http://localhost:4000/static/index.html
app.use('/static', express.static('public'))
4. 解决跨域请求cors问题
npm i cors安装包app.use(require('cors')())引入并使用,即可解决跨域- require('cors')是一个函数,使用()直接执行它,require('cors')()返回的是一个express可以直接使用的中间件,用app.use()执行
5. MongoDB数据库的基本使用
npm i mongoose安装- 使用
const mongoose = require('mongoose')
// 连接数据库
// mongoose.connect('url', {}) 第一个参数是一个数据库地址url,
mongoose.connect('mongodb://localhost:27017/express-test', { useNewUrlParser: true })
// 建立模型 mongoose.model() 第一个参数是模型名称,第二个是schema表结构,传递一个对象参数,定义该模型有哪些属性,属性属于什么数据类型
const Product = mongoose.model('Product', new mongoose.Schema({
title: String
}))
// 插入数据,使用一次后可注释删掉(正常情况不会直接使用这个方法去插入数据)
Product.insertMany([
{id: 1, title: 'Product A'},
{id: 2, title: 'Product B'},
{id: 3, title: 'Product C'},
])
// 请求数据,去mongodb查找数据属于异步操作
app.get('/products', async (req, res) => {
res.send(await Product.find()) // 必须要使用异步的写法
})
6. MongoDB查询
- find()查询返回的是一个数组,里面可能包含一个或多个对象
- findById()查询返回的是一个对象
// 跳过
res.send(await Product.find().skip(1))
// 限制查询条数
res.send(await Product.find().limit(2))
// 限制查询条件
res.send(await Product.find().where({
title: 'Product B'
}))
app.get('/products/:id', async (req,res) => {
// req.params 表示客户端传过来的所有参数(params是req里的,表示客户端请求的参数)
const data = await Product.findById(req.params.id)
res.send(data) // 服务端发送数据
})
7. MongoDB新增产品和POST请求
# 表示定义变量
@uri = http://localhost:4000/
GET {{uri}}products
###
GET {{uri}}products/633ce419701668578fb68962
###
POST {{uri}}products
Content-Type: application/json ###请求头
{
"title": "Product E"
}
// 实例化
const app = express()
// 允许express处理客户端提交过来的JSON数据
app.use(express.json())
app.post('/products', async (req, res) => {
const data = req.body
const product = await Product.create(data)
res.send(product)
})
8. MongoDB修改产品和PUT请求
# 修改
@uri = http://localhost:4000/
PUT {{uri}}products/633ceed2245afb6053dbc2a2
Content-Type: application/json
{
"title": "Product E-1"
}
# 删除
###
DELETE {{uri}}products/633ceed2245afb6053dbc2a2
// 修改
app.put('/products/:id', async (req,res) => {
const product = await Product.findById(req.params.id) // 异步
product.title = req.body.title
await product.save() // 异步
res.send(product)
})
// 删除
app.delete('/products/:id', async (req, res) => {
const product = await Product.findById(req.params.id)
await product.remove()
res.send({
success: true
})
})
vscode插件推荐
- 【REST Client】