node + express + mongodb 手动配置

首先创建一个文件夹,在文件夹中创建一个以js为后缀的主文件列如app.js

下载express框架和mongoose模块用来操作mongodb数据库

npm i express --save
npm i mongoose --save

在app.js文件中;

第一步、引入express然后引入bodyParser模块是用来解析客户端数据

第二步、创建express应用

第三步、引入需要的路由文件(类似于Django的class类视图,有几个视图创建几个路由文件)

第四步、设置跨域访问,代码如下:

跨域代码:

//设置跨域访问
app.all("*", function (req, res, next) {
    //设置允许跨域的域名,*代表允许任意域名跨域
    res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
    // //允许的header类型
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
    // //跨域允许的请求方式 
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    // 可以带cookies
    res.header("Access-Control-Allow-Credentials", true);
    if (req.method == 'OPTIONS') {
        res.sendStatus(200);
    } else {
        next();
    }
})

第五步、解析post数据,代码如下:

app.use(bodyParser.urlencoded({ extends: false }))
app.use(bodyParser.json())

app为应用名

第六步、把引入的路由放到use中间件上为路由对象匹配请求路径,列如,代码如下:

app.use('/list',ls)

list为一级路由,ls是引入的路由模块

第七步、配置运行项目端口号,代码如下:

app.listen(3000,()=>{
    console.log('服务器启动成功');
})

端口号为3000

app.js全部代码如下:

const express=require("express")//引入express
const bodyParser = require('body-parser')//解析客户端数据
require("./sjk")//引入数据库
const app=express()//创建应用
const ls = require('./router')//引入路由

//设置跨域访问
app.all("*", function (req, res, next) {
    //设置允许跨域的域名,*代表允许任意域名跨域
    res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
    // //允许的header类型
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
    // //跨域允许的请求方式 
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    // 可以带cookies
    res.header("Access-Control-Allow-Credentials", true);
    if (req.method == 'OPTIONS') {
        res.sendStatus(200);
    } else {
        next();
    }
})

app.use(bodyParser.urlencoded({ extends: false }))
app.use(bodyParser.json())

app.use('/list',ls)

//运行项目端口号
app.listen(3000,()=>{
    console.log('服务器启动成功');
})

然后数据库的文件夹里面创建连接数据表文件,列如database.js

在database.js文件中;

第一步、引入mongoose模块

第二步、连接数据库,代码如下:

mongoose.connect("mongodb://127.0.0.1/list").then(()=>{
    console.log('数据库连接成功')
})

127.0.0.1为数据库地址list为数据库表名

再创建数据表模型的文件(类似于Django的models文件,但是是一个模型创建一个文件)例如创建一个list.js文件

在list.js文件中;

第一步、引入mongose模块

第二步、创建表字段

第三步、把数据表向外暴露

list.js全部代码:

const mongoose = require("mongoose")//引入mongoose

//创建数据表
const list=new mongoose.Schema({
    //表字段
    photo:{type:String},
    name:{type:String},
    ower:{type:String},
    jianjie:{type:String}
})

//把数据表向外暴露
module.exports=mongoose.model("list",list)

创建一个文件夹放配置路由文件在路由文件里面写逻辑代码从前端获取数据和返回数据给前端,(类似于Django的view文件中的类视图)例如文件名为router.js。

第一步、引入express

第二步、创建路由对象

第三步、引入数据库文件,对数据库进行增删改查

第四步、写路由请求方式、逻辑代码

第五步、导出路由

router.js全部代码:

const express = require("express")//引入express
const router = express.Router()//创建路由对象
const ls = require("./list")//引入数据库

//请求方式 路由
//req为请求  res为响应
router.get("/ll",(req,res)=>{
    //逻辑代码
    var obj={
        photo:'成功'
    }
    res.json({obj})//返回数据
})

//导出路由
module.exports=router

mongoose模块的增删改查方法合集:

// 创建文档(构造函数)
const peopleList = new PeopleList({
    name: '姓名',
    age: '年龄',
    school:'学校'
})
// 将文档插入到数据
peopleList.save()    



// 查询用户集合中所有文档  可以根据条件查询
PeopleList.find().then(result=> console.log(result))
// 通过_id字段查找文档  会返回一个数组
PeopleList.find({_id:'6152d78d2950e0effd966971'}).then(result=>console.log(result))

// findOne返回一条文档 是对象格式   
PeopleList.findOne({name:'李逵'}).then(result=>console.log(result))

// $gt大于 $lt小于
PeopleList.find({ age: { $gt: 16, $lt: 25 } }).then(result => console.log(result))
// $in包含
PeopleList.find({ name:{$in:'张飞'}}).then(result=>console.log(result))
// 选择要查询的字段
PeopleList.find().select('name').then(result=>console.log(result))

// 对查询出来的字段进行排序 sort升序 -sort降序
PeopleList.find().sort('age').then(result=>console.log(result))
// skip跳过多少数据 limit限制查询数量
PeopleList.find().skip(1).limit(2).then(result => { console.log(result)})

// 查找一条文档并删除   
PeopleList.findOneAndDelete({ _id: '6152d94cda9b9bf65c544a97' }).then(result => console.log(result))
// 删除多个文档
PeopleList.deleteMany({}).then(result => console.log(result))

// 更新文档
PeopleList.updateOne({ name: '李逵' }, {name:'高俅'}).then(result=>console.log(result))
PeopleList.update({ _id: '6152d9f3e65fededb3f8dc0b' }, { age: 33 }).then(result => console.log(result))
// 更新多个文档
PeopleList.updateMany({}, {school:'振涛教育'}).then(result=>console.log(result))
李逵' }, {name:'高俅'}).then(result=>console.log(result))
PeopleList.update({ _id: '6152d9f3e65fededb3f8dc0b' }, { age: 33 }).then(result => console.log(result))
// 更新多个文档
PeopleList.updateMany({}, {school:'振涛教育'}).then(result=>console.log(result))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值