美文网首页
基于nodejs、mongodb之外卖平台后端接口开发文档(二)

基于nodejs、mongodb之外卖平台后端接口开发文档(二)

作者: 风中凌乱的男子 | 来源:发表于2021-06-24 21:27 被阅读0次
  1. 第一步,我们先来实现前台的注册登录接口。首先设计模型,在根目录下新建文件夹models,文件夹内新建User.js(用户表模型)ps:(建议首字母大写) 代码如下:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = new Schema({
    loginame: { type: String, required: true },
    password: { type: String },
    identity: { type: String, default: 'noVip' },//用户身份,默认不是会员,为后期开通会员功能做准备
    phone: { type: String },
    date: { type: Date, default: Date.now }
})
module.exports = User = mongoose.model("User", userSchema)
  1. 相对应的在routers文件夹内新建user.js(这就是为什么模型文件建议首字母大小),注册登录接口需要用到几个插件blueimp-md5、jsonwebtoken (md5加密插件、jwt生成token插件)
cnpm install blueimp-md5 jsonwebtoken --save
  1. user.js内编写代码
var express = require('express');
var router = express.Router();
/* 这中间等会要引入其他插件和模型 **/
//引入md5插件
var md5 = require('blueimp-md5')
//引入模型
var User = require("../models/User"); //引入模块模型
/* 开发接口在这中间编写代码 **/
module.exports = router;
  1. 因为注册接口需要生成token,我们需要先封装一个生成和解析token的方法,在根目录下新建utils文件夹,内建token.js,代码编写如下:
var jwt = require('jsonwebtoken');
var jwtScrect = 'aoaoe'; //签名
//登录接口 生成token的方法
var setToken = function(_id, loginame, identity, phone) {
    return new Promise((resolve, reject) => {
        //expiresln 设置token过期的时间
        //{ loginame: loginame, _id: _id } 传入需要解析的值( 一般为用户名,用户id 等)
        const rule = { _id: _id, loginame: loginame, identity: identity, phone: phone };
        const token = jwt.sign(rule, jwtScrect, { expiresIn: '1day' });
        resolve(token)
    })
}
//各个接口需要验证token的方法
var getToken = function(token) {
    return new Promise((resolve, reject) => {
        if (!token) {
            console.log('token是空的')
            reject({
                error: 'token 是空的'
            })
        } else {
            //第二种  改版后的
            var info = jwt.verify(token, jwtScrect);
            resolve(info); //解析返回的值(sign 传入的值)
        }
    })
}
module.exports = {
    setToken,
    getToken
}
  1. 在user.js内引入 token.js,最后的代码如下:
var express = require('express');
var router = express.Router();
/* 这中间等会要引入其他插件和模型 **/
//引入md5插件
var md5 = require('blueimp-md5')
//引入模型
var User = require("../models/User");
//引入token.js  
var vertoken = require('../utils/token')

/* 开发接口在这中间编写代码 **/
module.exports = router;
  1. 最重要的一步,我们要在app.js内引入模型和路由
    ps:项目自己生成的
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    要删掉他!!!
    下面相关联的地方也要删除!!
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    在他的位置引入我们的user.js,并且也要use一下
var userRouter = require('./routes/user');
app.use('/client/api', userRouter);
  1. ok,下面开始开发注册接口,接口代码如下:
//注册接口,接口我测试过,没问题!如果你失败了,请仔细翻文档自己找问题
router.post('/register', (req, res) => {
    const newUser = new User({ // 用户传参
        loginame: req.body.loginame,
        password: md5(req.body.password),
    });
    const loginame = req.body.loginame;
    User.find({ loginame: loginame }, (err, docs) => {
        if (docs.length > 0) {
            res.json({
                code: 200,
                message: '用户名已存在'
            })
        } else { // 向集合中保存数据
            newUser.save(err => {
                const data = err ? {
                    code: -1,
                    message: '系统出错,攻城狮正在加急处理中...',
                    data: err.errors
                } : {
                    code: 200,
                    message: '注册成功'
                }
                res.json(data);
            });
        }
    })
});

注册接口end
接下一章

相关文章

网友评论

      本文标题:基于nodejs、mongodb之外卖平台后端接口开发文档(二)

      本文链接:https://www.haomeiwen.com/subject/xzxgyltx.html