IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> koa学习 -> 正文阅读

[大数据]koa学习

一、搭建本地服务器

(1)创建项目

(2)执行npm init创建package.json文件

(3)安装依赖 cnpm install koa koa-router --save

(4)安装自动监测代码变更的工具?cnpm install -g nodemon

(5)代码示例

package.json

{
  "name": "koa01",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "serve": "nodemon app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "koa": "^2.13.1",
    "koa-router": "^10.1.1"
  }
}

app.js

const koa = require("koa");
const Router = require("koa-router");
// 实例化koa
const app = new koa();
const router = new Router()

// 路由
router.get ('/', async ctx => {
    ctx.body = {
        msg: 'Hello koa Interfaces'
    }
})

// 配置路由
app.use(router.routes()).use(router.allowedMethods());

const port = process.env.port || 5000;

app.listen(port, ()=>{
    console.log(`server started on ${port}`)
})

二、连接mongodb数据库

安装依赖

cnpm install mongoose --save

将连接地址写在配置文件里面,./config/key.js

module.exports = {
    mongoURL: "mongodb+srv://user:root@cluster0.r9bsn.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
}

// 在app.js中引入mongoose进行连接

const koa = require("koa");
const Router = require("koa-router");
const mongoose = require("mongoose")

// 实例化koa
const app = new koa();
const router = new Router()

// 路由
router.get ('/', async ctx => {
    ctx.body = {
        msg: 'Hello koa Interfaces  a'
    }
})

// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose.connect(db,
    {useNewUrlParser:true}
)
.then(()=>{
    console.info('Mongodb COnnected.....');
}).catch(err => {
    console.log(err);
})
// 配置路由
app.use(router.routes()).use(router.allowedMethods());

const port = process.env.port || 5000;

app.listen(port, ()=>{
    console.log(`server started on ${port}`)
})

三、对路由进行模块化

创建目录routes/api/users.js

内容如下

// 关于用户的接口文件
const Router = require('koa-router');
const router = new Router();

/**
 * @route GET api/users/test
 * @description 测试借口地址
 * @access 接口是公开的
 */
router.get("/test",async ctx => {
    ctx.status = 200;
    ctx.body = {
        msg: 'users works...'
    }
})
module.exports = router.routes()

在api.js中进行引入

const koa = require("koa");
const Router = require("koa-router");
const mongoose = require("mongoose")

// 实例化koa
const app = new koa();
const router = new Router()

// 引入 users.js
const users = require('./routes/api/users')
// 路由
router.get ('/', async ctx => {
    ctx.body = {
        msg: 'Hello koa Interfaces  a'
    }
})

// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose.connect(db,
    {useNewUrlParser:true}
)
.then(()=>{
    console.info('Mongodb COnnected.....');
}).catch(err => {
    console.log(err);
})
// 配置路由地址
router.use('/api/users',users)
// 配置路由
app.use(router.routes()).use(router.allowedMethods());

const port = process.env.port || 5000;

app.listen(port, ()=>{
    console.log(`server started on ${port}`)
})

四、创建用户模型

创建目录及文件models/user.js

内容如下

const mongoose = require("mongoose")
const Schema = mongoose.Schema;

// 实例化数据模板
const UserSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    avatar: {
        type: String
    },
    date: {
        type: Date,
        default: Date.now
    }
});

module.exports = User = mongoose.model("users", UserSchema);

在需要使用的路由文件routes/api/user.js里面进行引入

//?引入User

const?User?=?require("../../models/user")

五、安装调试接口工具? postman

六、注册用户接口

(1)获得用户传过来的数据,需要安装koa-bodyparser

cnpm install koa-bodyparser --save

在app.js文件中引入并使用

var?bodyParser?=?require("koa-bodyparser")

app.use(bodyParser())

(2)使用bcryptjs对密码进行加密

安装依赖?cnpm i bcryptjs --save

需要使用的文件中?

//?引入加密依赖

const?bcrypt?=?require('bcryptjs')

?使用代码如下

router.post('/register', async ctx=> {
    // console.log(ctx.request.body)
    // 存储到数据库
    const findResult = await User.find({
        email: ctx.request.body.email
    })
    if (findResult.length > 0) {
        console.log(findResult)
        ctx.status = 500;
        ctx.body = {
            email: '邮箱已被占用'
        }
    } else {
        // 没有查到
        const newUser = new User({
            name: ctx.request.body.name,
            email: ctx.request.body.email,
            password: ctx.request.body.password
        })
        /*await bcrypt.genSalt(10, (err, salt) => {
            bcrypt.hash(newUser.password, salt, (err, hash) => {
                if (err) throw err;
                // Store hash in your password DB.
                newUser.password = hash
            });
        });*/
        let hasPwd = bcrypt.hashSync(newUser.password, 10);
        newUser.password = hasPwd
        console.log(newUser)
        // 存储到数据库
        await newUser
        .save().
        then(user => {
            ctx.status = 200;
            ctx.body = user;
        })
        .catch(err => {
            console.log(err)
        })
        // 
        ctx.body = newUser
    }
    //ctx.status = 200
})

?七、全球公认头像的使用

安装?

npm install gravatar --save
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:24:52  更:2021-09-14 13:26:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:53:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码