打卡node day06 ---登录和注册接口
1, nodemon
自动更新代码
npm i -g nodemon
启动: nodemon server.js
2,注册接口
1)目录结构

2)server.js
const express = require('express');
// 链接数据库
const db = require('./db/connect')
const app = express();
// 解析req.body
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
// 用户相关的接口
const userRouter = require('./router/userRouter')
app.use('/user', userRouter)
app.listen(3000,()=>{
console.log('server start')
})
3)connect.js
var mongoose = require('mongoose');
// 链接数据库
mongoose.connect('mongodb://localhost/local', {useUnifiedTopology: true,useNewUrlParser: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('db ok')
});
4)userRouter.js
var express = require('express')
var router = express.Router()
// 引入userModel 数据库操作
const User = require('../db/model/userModel')
// 用户注册 /user/reg
router.post('/reg', function (req, res) {
// 获取数据
let {username, password} = req.body
if(!username || !password) return res.send({code:400,message:'用户名及密码必填!!!'})
// 数据处理
// 判断数据库里存在?
User.find({username}).then(data=>{
if(data.length > 0) {
res.send({code:405,message:'用户名已存在'})
}else {
return User.insertMany({username,password})
}
})
.then(data=>{
res.send({code:200,message:'注册成功'})
})
.catch(err=>{
res.send({code:500,message:'注册错误'})
})
})
// 用户登录 /user/login
router.post('/login', function (req, res) {
// 获取数据
let {username, password} = req.body
if(!username || !password) return res.send({code:400,message:'用户名及密码必填!!!'})
// 数据处理
User.find({username,password})
.then(data=>{
// console.log(data) 数组
if(data.length > 0) {
res.send({code:200,message:'登录成功'})
}else {
res.send({code:401,message:'用户名或密码错误'})
}
})
.catch(err=>{
res.send({code:500,message:'内部错误'})
})
})
module.exports = router
5)userModel.js
var mongoose = require('mongoose');
// schema 对象
var userSchema = new mongoose.Schema({
username:{type:String,required:true},
password:{type:String,required:true},
age:Number,
sex:{type:String,default:0},
});
// 转数据模型
const User = mongoose.model('user', userSchema);
module.exports= User
6)数据库结果

3,登录接口

打卡node day06 ---登录和注册接口的更多相关文章
- 短信登录与注册接口、前端所有方式登录注册页面、redis数据库介绍与安装
今日内容概要 短信登陆接口 短信注册接口 登陆注册前端 redis介绍和安装 内容详细 1.短信登陆接口 在视图类 user/views.py中修改并添加: from .serializer impo ...
- 三:后台的登录注册接口(moon项目,前面有一,二)
** 项目一共有 16 个页面,是一个电商网销项目,自己在网上的某网上找的一个要做的网站的设计图: 页面主要包括: 登录页 -- 注册页 -- 首页 -- 产品列表页 -- 产品详情页 -- 会员中 ...
- node express 登录拦截器 request接口请求
1.拦截器 拦截器可以根据需要 做权限拦截 登录只是权限的一种, 思路是req.session.user判断用户session是否存在,是否是需要拦截的地址, 如果是就跳转登录页,或其他页, 如果非需 ...
- 路飞-Redis的使用,登录注册接口
复习 """ 1.git项目开发 提供公钥成为开发者.copy项目.开发项目 先commit.再pull(可能出现冲突).最后push 特殊功能可以新建dev的子分支进行 ...
- 利用开源项目使discus论坛与java应用同步登录和注册
最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块(评论啊,反馈啊)来减轻负担,甚至提到了要给每个资源开一帖的功能..使我十分怀疑到底是减轻负担还是增加负担...不过怀疑归怀疑, ...
- Django用户登录与注册系统
一.创建项目 1.1.创建项目和app python manage.py startproject mysite_login python manage.py startapp login 1.2.设 ...
- 不用框架,原生使用python做注册接口/登陆接口/充值接口的测试,做的数据/代码分离
注意充值时候,cookie的处理方法,还是原来的三种方法 1.操作数据文件 do_exclel.py # -*- conding:utr-8 -*- #@Time :2018/11/8 22:46 ...
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
- Django商城项目笔记No.5用户部分-注册接口-短信验证码
Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...
- App的登陆注册接口安全设计
最近一APP产品,我担任的主要模块之一是后台登录注册模块的接口开发.基本完成,就说说并记录一下关于登录注册接口的一些东西,因为也涉及到接口的安全方面的问题. 1.先一般的app的登录注册接口安全设计上 ...
随机推荐
- PS技能之电子签名+修白牙齿
PS技能 NO.1 电子签名 有时候由于时空的限制,本人无法签字,那么电子签名就有了它的作用啦![注:谨慎使用] 亲试有效的教程,现在就是做笔记的时候啦! 教程链接如下: https://blog.c ...
- vue项目去掉网页滚动条
点击查看代码 <template> <div id="app"> <router-view /> </div> </templ ...
- spring boot No qualifying bean of type 'org.apache.catalina.core.ApplicationContext' available
发现创建的ApplictionContext对象还没有containsBean的方法, 找了很久没搞定,后面发现原来是包导入错了. 应该导入 import org.springframework.co ...
- (python笔记)python使用JS定位css元素
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time import da ...
- 2021-12-14 MobX分享
MobX分享 文档地址: https://cn.mobx.js.org/ MobX是一种简单的.可扩展的状态管理,它通过透明的函数响应式编程使得状态管理变得简单和可扩展. React通过提供机制把应用 ...
- Vmware-workstation - Centos8.0扩容磁盘空间 / 目录
1. 软件版本 vmware workstation 15 pro 虚拟机: centos8.0 2.将虚拟机关机选择扩容到多大 3. 进入操作系统,执行lsblk查看sda盘的情况.下图所示,需要 ...
- js 判断滚动条 是否滚动到底部
解决问题思路 滚动条距离上面的滚动高度(scrollTop) + 滚动条本身高度 = 整个页面的高度(pageHeight) 关键点:滚动条本身高度是多少 事实上,这里就有一个思想误区,人会想直接获取 ...
- Python学习的第四次总结
修改文件内某行内容 f_read = open('文件名','r',encoding='utf-8')f_write = open('文件名1','w',encoding='utf-8')number ...
- UITextView布局不是从0开始的问题
///去掉padding UITextView.textContainer.lineFragmentPadding = 0; UITextView.textContainerInset = UIEdg ...
- Day24:结论的撰写&&openid再次尝试
今日完成的任务: 1.完成部分总报告结论的撰写. 2.再次尝试获取openid 根据官方文档,wx.login()的回调函数中,需要我们传递生成的用户登录凭证到code2accessToken的接口中 ...