1--》快速上手路由constexpress=require("express");constapp=express();app.get('/',(req,res)=>{res.send({success:'ok'});})app.listen(3000,()=>{console.log("APPislistening3000!");})2--》静态文件托管constpath=require("path");app.use(express.static(path.join(__dirname,'public')))3--》CORS跨域请求1:npmicorsapp.use(require('cors)());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基础constmongoose=require("mongoose");mongoose.connect('mongodb://localhost:27017/database',{useNewUrlParser:true,});consttestSchema=newmongoose.Schema({title:String})constTest=mongoose.model('Test',testSchema)consttest=newTest({title:'测试'})test.save();ps:consttest=Test.create({...})ps:Test.insertMany({...})5--》MongoDB查询find()查询所有数据,返回数据分页limit--limithowmanyskip--howmanyskipfind().limit(number).skip(number)返回一个对象——动态获取数据:idfindById(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)=>{awaitTest.create(req.body)})restclientplugin相当于postman7--》MongoDB修改product并PUT请求app.put('product/:id',async(req,res)=>{constdata=awaitTest.findById(req.params.id);data.title=req.body.title;awaitTest.save();ps:awaitTest.updateOne({_id:req.params.id,req.body})})8--"MongoDB删除产品和删除请求app.put('product/:id',async(req,res)=>{constdata=awaitTest.findById(req.params.id);data.title=req.body.title;awaitTest.remove();ps:awaitTest.deleteOne({_id:req.params.id})})总结:基于Mongoose的mongodb模型抽象及增删改查操作模型查询方法列表: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()高级查询1.查询特定字段只查询age字段:User.find({},'age').then((docs)=>{console.log(docs);}).catch((err)=>{})条件判断查询查询所有age大于等于18的文档letconditions={age:{$gt:18}};User.查找(条件).then((文档)=>{console.log(文档);});查询年龄为18和20的所有文档conditions={age:{$in:[18,20]}};User.find(conditions).then((docs)=>{console.log(docs);});查询所有age为17或16的文档conditions={$or:[{age:16},{age:17}]};User.find(conditions).then((docs)=>{console.log(docs);});查询所有age为17或16的文档conditions={sex:{$exists:true}};User.find(conditions).then((docs)=>{console.log(docs);});游标操作和排序跳过和限制链调用方法查询User.find().skip(2).limit(2).then((docs)=>{console.log(docs);});sortsort排序1:升序/-1:降序通过链调用User.find().sort({age:1}).skip(3).limit(3).then((docs)=>{console.log(文档);});
