引入npm 第三方mongoose包鏈接mongoDb本地數據庫todolist const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/todolist',{ useNewUrlParser: true , useUnifiedTopology: true }); //導出數據庫鏈接文件 module.exports=mongoose; //導入鏈接數據庫文件 const mongoose=require('./connect') const Schema = mongoose.Schema; 這裏直接用mongoose schema 建模 const userSchema=new Schema({ name:{type:String}, password:{type:String} }) const todoContentSchema=new Schema({ data:{type:String}, isV:{type:Number,default:1} , com:{type:String,default:1}, th:{type:String,default:0} }) //實例化模型 const todoContent = mongoose.model('todoContent', todoContentSchema); const User = mongoose.model('User', userSchema); // const login= mongoose.model('login', userShema); // const Cat = mongoose.model('Cat', catSchema); module.exports={ User,todoContent } //後臺代碼 用node js express 框架 const express=require('express') const bodyParse=require('body-parser') //這裏用cors第三方包作了跨域處理 const cors=require('cors') //導入鏈接數據庫的文件 const { User,todoContent}=require('./model/index') //導入token 文件 const {verifyToken,createToken}=require('./token') const app=express() app.use(express.json()) app.use(cors()) // app.use(express.urlencoded({extended:false})) // var urlencodedParser = bodyParse.urlencoded({ extended: false }) const PORT=8220 //註冊用戶接口 app.post("/regist",(req,res)=>{ //console.log(req.body); const UserDate = req.body; const name=req.body.name; const password=req.body.password; const user=new User(UserDate) user.save().then((data)=>{ console.log(data); res.send({ status:200, msg:"添加數據成功", data:{ name, password } }) }) }) //登陸用戶接口 app.post('/login',(req,res)=>{ const {name,password}=req.body; User.findOne({name}).then((UserDate)=>{ // console.log(UserDate); if(password===UserDate.password){ const token=createToken(UserDate) res.send({ status:300, msg:"登陸成功", data:{ name, password, token } }) }else{ res.send({ status:303, msg:"用戶名或者密碼錯誤" }) } }) }) //添加數據接口 app.post('/todo',(req,res)=>{ const data=req.body; console.log(data); // res.send(data) const todolist=new todoContent(data) todolist.save().then((data)=>{ res.send({ status:203, msg:"添加數據成功", data:{ data } }) }) }) //修改數據接口 app.patch("/todo/:id", (req, res) => { console.log(req.params.id); console.log(req.body); todoContent.updateOne({ _id: req.params.id }, req.body).then((updata) => { todoContent.find({ _id: req.params.id }).then((data) => { res.send({ status: 400, msg: "更新成功", data }); }); }); }) //刪除數據接口 app.delete("/todo/:id", (req, res) => { const id = req.params.id; todoContent.updateOne({ _id: id }, { com: 0 }).then((data) => { res.send({ status: 500, msg: "刪除成功", data, }); }); }); //拿到當前用戶名 app.get("/todo",vv,(req,res)=>{ //return res.send(req.body.usertoken) const id = req.params.id; const data=req.body.usertoken.data console.log(data); console.log(id) res.send({ status:410, msg:"獲取用戶名成功", data:{ user: req.body.usertoken.data } }) }) //拿到全部代辦事項數據 app.get("/data",(req,res)=>{ todoContent.find({com:"1"}).then((data)=>{ res.send({ status:306, msg:"獲取數據成功", data:{ data } }) }) }) //完成數據 app.put('/data/:id',(req,res)=>{ const id = req.params.id; todoContent.updateOne({_id:id}, {$set:{th:1}} ).then((data)=>{ res.send({ status:400, msg:"更新成功" }) } ) }) //手寫中間件驗證token function vv(req, res, next) { const token = req.headers.authorization.split(" ")[1]; const usertoken = verifyToken(token); // console.log(usertoken); if(!usertoken){ res.sendStatus(401) }else{ req.body.usertoken=usertoken; next() } } app.listen(PORT,()=>{ console.log(`服務運行在${PORT}`); })