1--》快速上手路由
const express = require("express");mongodb
const app = express();express
app.get('/', (req, res) => {npm
res.send({ success: 'ok' });
})json
app.listen(3000, () => {跨域
console.log("APP is listening 3000!");
})app
2--》靜態文件託管
const path = require("path");cors
app.use(express.static(path.join(__dirname, 'public')))async
3--》CORS跨域請求
1:npm i corsmongoose
app.use(require('cors)());post
2: app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); next();
});
4--》MongoDB基礎
const mongoose = require("mongoose");
mongoose.connect('mongodb://localhost:27017/database', {useNewUrlParser: true,});
const testSchema = new mongoose.Schema({
title: String
})
const Test = mongoose.model('Test',testSchema)
const test = new Test({
title: '測試'
})
test.save();
ps: const test = Test.create({...})
ps: Test.insertMany({...})
5--》MongoDB查詢
find() 查詢全部數據,返回數據
分頁 limit--限制多少條 skip--跳過多少條
find().limit(number).skip(number)
返回對象--動態獲取數據:id
findById(req.params.id)
findOne()
find().where()
find.sort({id: +-1}) 1表示升序 -1表示降序
6--》MongoDB新增產品和POST請求
app.use(express.json())
app.post('/test', async (req,res) => {
await Test.create(req.body)
})
rest client插件 至關於postman
7--》MongoDB修改產品和PUT請求
app.put('product/:id', async (req, res) => {
const data = await Test.findById(req.params.id); data.title = req.body.title; await Test.save();
ps:await Test.updateOne({_id: req.params.id , req.body})
})
8--》MongoDB刪除產品和DELETE請求
app.put('product/:id', async (req, res) => {
const data = await Test.findById(req.params.id); data.title = req.body.title; await Test.remove();
ps:await Test.deleteOne({_id: req.params.id })
})
總結:基於mongoose的 mongodb 模型抽象 和 增刪改查操做
Model 提供的查詢方法列表:
Model.find()
Model.findById()
Model.findByIdAndDelete()
Model.findByIdAndRemove()
Model.findByIdAndUpdate()
Model.findOne()
Model.findOneAndDelete()
Model.findOneAndRemove()
Model.findOneAndUpdate()
數據插入
Model.create()
Model.save()
數據更新
Model.update()
Model.updateMany()
Model.updateOne()
數據刪除
Model.deleteMany()
Model.deleteOne()
Model.remove()
高級查詢
一、查詢特定字段
只查詢 age 字段:
User.find({},'age').then((docs)=>{
console.log(docs);
}).catch((err)=>{})
條件判斷查詢
查詢年齡大於等於18歲的全部文檔
let conditions = {age:{$gt:18}};
User.find(conditions).then((docs)=>{
console.log(docs);
});
查詢全部年齡是 18 和 20 的文檔
conditions = {age:{$in:[18,20]}};
User.find(conditions).then((docs)=>{
console.log(docs);
});
查詢年齡是17 或者 16 的全部文檔
conditions = {$or:[{age:16},{age:17}]};
User.find(conditions).then((docs)=>{
console.log(docs);
});
查詢年齡是 17 或者 16 的全部文檔
conditions = {sex:{$exists:true}};
User.find(conditions).then((docs)=>{
console.log(docs);
});
遊標操做和排序
skip 和 limit
鏈式調用方法進行查詢
User.find().skip(2).limit(2).then((docs)=>{
console.log(docs);
});
排序
sort 排序 1:升序 / -1:降序
經過鏈式調用
User.find().sort({age:1}).skip(3).limit(3).then((docs)=>{
console.log(docs);
});