赞
踩
第一部分:原生node搭建服务器
index.js
const http = require('http') const path = require('path') class Server { constructor () { this.server = http.createServer() // 创建服务器 this.reqEvent = {} this.server.on('request', (req, res) => { const pathObj = path.parse(req.url) if (pathObj.dir in this.reqEvent) { res.writeHead(200, { 'Content-Type': 'application/json' }) this.reqEvent[pathObj.dir](req, res) } else { res.writeHead(404, { 'Content-Type': 'text/plain; charset=UTF-8' }) res.end('404') } }) } on (url, fn) { this.reqEvent[url] = fn } run (port, callBack) { this.server.listen(port, callBack) } } module.exports = Server
login.js
const Server = require('./index.js') const path = require('path') const qs = require('querystring') const serve = new Server() serve.run(3000, () => { console.log('开启') }) // 监听开启 const success = (res, data) => { const resultObject = { code: 200, data: data || null } const resultJSON = JSON.stringify(resultObject) res.end(resultJSON) } const fail = (res, data) => { res.writeHead(404, { 'Content-Type': 'application/json' }) const resultObject = { code: 404, data: data || null } const resultJSON = JSON.stringify(resultObject) res.end(resultJSON) } serve.on('/', (req, res) => { const urlBase = path.parse(req.url) const urlBaseArr = urlBase.base.split('?') let paramsObj if (urlBaseArr[1]) paramsObj = qs.parse(urlBaseArr[1]) if (urlBaseArr[0] === 'login') { if (('username' in paramsObj) && ('password' in paramsObj)) { success(res, {msg: '登录成功'}) } } else { fail(res, {msg: '请求路径不正确'}) } })
第二部分:express框架搭建服务器
const express = require('express') const app = express() // 创建app服务对象 app.use((req, res, next) => { console.log('我是请求拦截器,所有的请求都会先经过我这里') next() // 放行 }) app.get('/', (req, res) => { res.send('返回的内容') }) app.post('/login', (req, res) => { res.send('精确匹配,返回的内容') }) app.listen(300, (err) => { if (!err) console.log('服务器启动成功') else console.log(err) })
第三部分:数据库部分(mongodb)
通过mongoose进行增删改查
通过MongoDB Compass进行可视化
1、index.js
/* 下载mongoose yarn add mongoose */ //引入 const mongoose = require("mongoose"); const db = mongoose.connection; //连接数据库 mongoose.connect("mongodb://localhost:27017/local" , { useUnifiedTopology: true}) //监听事件 db.once("open",function(){ console.log("数据库连接成功~~~"); }) db.once("close",function(){ console.log("数据库连接已经断开~~~"); }) //断开数据库连接,一般不调用 //mongoose.disconnect(); // 定义文档数据类型 const Schema = mongoose.Schema const schema = new Schema({ name: String, age: { type: Number, default: 3 } }) // 选择 const connection = mongoose.createConnection('mongodb://localhost:27017/admin') //结合 const StuModel = connection.model('studend', schema) // 会自动把studend集合名加上s,改为复数名 // 导出 exports.StuModel = StuModel
2.add.js 增
//引入 require('./mongoose') const { StuModel } = require('./mongoose') // 插入第一种方法 StuModel.create([ { name: '小一', age: 23 }, { name: '小二', age: 23 } ], function (err) { if (!err) { console.log('插入成功') } }) // 插入第二种方法 const stu = new StuModel({ name: '小五', age: 23 }) stu.save(function(err) { if (!err) { console.log('插入成功') } }) // 此方法目前尝试只能插入一条
3.remove.js 删
// 引入 require('./mongoose') const { StuModel } = require('./mongoose') // 删除第一种方法 StuModel.remove({_id: '60b75c276ad16f0c0713cd32'}, function(err) { if (!err) { console.log('删除成功') } }) StuModel.deleteOne() StuModel.deleteMany() // 删除第二种方法,通过docs操作删除,先查询,再删除 StuModel.findOne({_id: '60b73f96ca65ba08bb2074de'}, function(err, docs) { if (!err && docs) { docs.remove((err) => { if (!err) { console.log('删除成功') } }) } })
4.update.js 改
// 引入 require('./mongoose') const { StuModel } = require('./mongoose') // 修改第一种方法 -- 修改单个 StuModel.updateOne({_id: '60b759e7f594660b974dbfbc'}, {age: 100}, function(err) { if (!err) { console.log('修改成功') } }) // 修改第一种方法 -- 修改多个 StuModel.updateMany({ ... }) // 修改第二种方法 -- 通过docs操作修改 StuModel.findOne({_id: '60b73b013191170884abc2b9'}, function(err, docs) { if (!err && docs) { // 第二种方法 -- 1 docs.update({$set: {age: 200}}, function(err) { // 结合查询做修改 if (!err) { console.log('修改成功') } }) // 第二种方法 -- 2 docs.age = 300 docs.save() } })
5.find.js 查
// 引入 require('./mongoose') const { StuModel } = require('./mongoose') // 第一种方法 // 参1 查询的筛选条件,空对象查询所有的 // 参2 筛选出对象里要的属性,不给默认所有字段 // 参3 option配置参数,里面可以配置很多东西,如skip跳过前几个,limit只显示前几个 StuModel.find({name: '小蓝'}, "name", {skip: 1, limit: 1}, function(err, docs) { if (!err) { console.log(docs) // [{}, {}] } }) // 第二种方法 -- 只查询一条 StuModel.findOne({}, ....) // 第三种方法 -- 根据id查询,结果是一个对象 StuModel.findById("60b75c276ad16f0c0713cd32", ....) // 第四种方法 -- 只查询文档数量 StuModel.count({}, function(err, count) { if (!err) { console.log(数量, count) } })
第四部分:阿里云部署
…待定
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。