使用的是elementui ,json,axios,node·js,vue
// 验证账号是否存在
let cheeckId = (rule, value, callback) => {
}
你得有一个服务器代码,查询数据库,根据传入的用户名,返回某个用户是否存在。
案例代码,
export default {
...
methods: {
// 异步验证用户名是否存在
checkUsernameExist() {
// 如果用户名为空,则不进行验证
if (!this.username) return
// 显示Loading
this.isLoading = true
Loading.service({ fullscreen: true, text: '正在验证中...' })
// 发送请求
return axios.get(`${API_URL}/users/${this.username}`)
.then(response => {
// 验证成功,用户名不存在
if (response.status === 204) {
this.isUsernameExist = false
Message.success('恭喜您,此用户名可以使用')
} else {
// 验证失败,用户名已存在
this.isUsernameExist = true
Message.warning('用户名已存在,请重新输入')
}
})
.catch(error => {
// 发送请求失败
console.error('验证失败', error)
Message.error('验证失败,请稍后再试')
})
.finally(() => {
// 隐藏Loading
this.isLoading = false
Loading.service().close()
})
},
...
}
}
官网:
http://www.axios-js.com/zh-cn/docs/vue-axios.html
cnpm install axios -s
cnpm install --save vue-axios
我可以通过以下方法来验证一个注册账号是否已经存在,具体步骤如下:
前端输入账号信息,将其转换为json格式并发送给后端,使用axios发送网络请求,将注册信息传递给后端。
在后端,使用node.js来解析收到的数据,并查询数据库中是否存在已注册该账号的记录。可以使用mysql等数据库方案。
判断是否存在该账号,如果存在就返回账号已被注册的提示信息,如果不存在则将注册信息保存到数据库中。
如果返回提示信息,则在前端使用elementui来弹出提示窗口,提示用户账号已被注册,如果没有返回提示信息则说明账号注册成功。
以下是大致的代码示例:
前端:
import axios from 'axios'
import { Message } from 'element-ui'
// 定义sendData为用户输入的账号信息
const sendData = { name: 'xxx', password: 'xxxx' }
// 发送注册信息给后端
axios.post('/register', sendData)
.then(response => {
const data = response.data
if (data.code === 1) { // 账号已被注册
Message.warning(data.msg)
} else { // 注册成功
Message.success(data.msg)
}
})
.catch(err => {
console.log('注册失败!', err)
})
后端:
const mysql = require('mysql')
// 连接数据库
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'test'
})
// 查询是否存在该账号记录
function getUser(username) {
const query = 'SELECT username FROM users WHERE username = ? '
return new Promise((resolve, reject) => {
connection.query(query, [username], (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})
}
// 注册账号处理函数
function register(req, res) {
// 获取前端发送的注册信息
const userData = req.body
// 判断账号是否已经被注册过
getUser(userData.name)
.then(result => {
if (result.length > 0) { // 账号已经被注册
res.status(200).json({code: 1, msg: '该账号已经被注册!'})
} else { // 账号未被注册
const query = 'INSERT INTO users SET ?'
connection.query(query, userData, (error, results) => {
if (error) {
console.log('注册失败!', error)
res.status(500).json({code: -1, msg: '注册失败,请稍后再试!'})
} else {
console.log('注册成功!')
res.status(200).json({code: 0, msg: '注册成功!'})
}
})
}
})
.catch(err => {
console.log('查询用户信息失败!', err)
res.status(500).json({ code: -1, msg: '注册失败,请稍后再试!' })
})
}
// 注册路由
router.post('/register', register)
需要注意的地方:
前、后端需要约定账号信息发送和接收的数据格式。
代码示例中数据库使用mysql进行演示,如果使用其他的数据库方案需要对应修改相应代码。
代码因环境不同可能会存在未解决的问题,需要根据具体情况进行修改和调试。