Nodejs-Express-Mongodb-基础

90次阅读

共计 2693 个字符,预计需要花费 7 分钟才能阅读完成。

1–》快速上手路由
const express = require(“express”);

const app = express();

app.get(‘/’, (req, res) => {

res.send({success: 'ok'});

})

app.listen(3000, () => {

console.log("APP is listening 3000!");

})

2–》静态文件托管
const path = require(“path”);

app.use(express.static(path.join(__dirname, ‘public’)))

3–》CORS 跨域请求
1:npm i cors

app.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 基础
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()

高级查询
1、查询特定字段
只查询 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);

});

正文完
 0