1216Express学习

一、Node自动重启工具 nodemon

cnpm install -g  nodemon

1、 编写server.js

const express=require('express');
const app=express();

app.get('/', function(req, res) {

res.send({ page: 'home' })

})

app.listen(3000, () => {

console.log('运行在3000端口')

});

2、 运行server.js

nodemon app.js ~~~~~~~~

二、Express静态资源托管

app.use('/', express.static('public'))

将public文件夹得静态资源托管起来,可以通过http://localhost:3000/index.html来访问静态内容(默认是根路径,路径可改~~~~)

二、解决cors跨域请求

1、 安装cors插件

npm i cors

2、 使用cors插件~~~~

app.use(require('cors')())

三、连接mongdb数据库~~~~

//连接数据库

const mongoose=require('mongoose')
mongoose.connect('mongodb://localhost:27017/express-test', {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

//定义数据模型

const Schema=mongoose.Schema;
const Product=mongoose.model('Product',newSchema({
    title: String
}))

//Product.insertMany([{ title: '产品1' }, { title: '产品2' }, { title: '产品3' }])

//find方法--全部查出

app.get('/product', asyncfunction(req, res) {
    //find 查询全部
    res.send(awaitProduct.find();
    //limit 限制条数
    res.send(awaitProduct.limit(2);
    //skip 跳过条数
    res.send(awaitProduct.skip(4).limit(2); //skip limit结合做分页
    //where 参数是查询条件--查询title是产品1的内容~~~~
    res.send(awaitProduct.find().where({
        title: '产品1'
    }))
    //sort 排序
    res.send(awaitProduct.find().sort({ _id: -1 }))
    
    //产品详情页
    app.get('/products/:id', asyncfunction(req, res) {
        const data=awaitProduct.findById(req.params.id)
        res.send(data)
    })
//查询某一个产品-根据id

app.get('/products/:id', asyncfunction(req, res) {
    const data =await Product.findById(req.params.id)
    res.send(data)
})
post请求——新增产品
//允许express处理提交过来的json
 app.use(express.json())


//psot请求
app.post('/products', asyncfunction(req, res) {
//表示客户端用post提交过来的数据
const data = req.body
//在数据模型Product中,创建一条新数据
const product =await Product.create(data)
    res.send(product)
})

1216Express学习_第1张图片

put请求——修改产品信息
//put  修改产品信息

app.put('/products/:id', asyncfunction(req, res) {
    const product =await Product.findById(req.params.id)
    product.title = req.body.title
    await product.save()
    res.send(product)
})

1216Express学习_第2张图片

delete请求——删除一条~~~~信息
//delete 

app.delete('/products/:id', asyncfunction(req, res) {
const product  = await Product.findById(req.params.id)
await product.remove()
    res.send({
        success: true
    })
})

1216Express学习_第3张图片~~~~

四、vscode接口测试插件 - REST client


@url = http://localhost:3000/

GET {{url}}products
###

GET {{url}}products/5df72b83d390c43b6071cee8~~~~
###

你可能感兴趣的:(node.js)