有过这种情况,在页面加载时,初始化所需的数据,就需要用created()了。vue.js中created方法是一个生命周期钩子函数,一个vue实例被生成后会调用这个函数。一个vue实例被生成后还要绑定到某个html元素上,之后还要进行编译,然后再插入到document中。每一个阶段都会有一个钩子函数,方便开发者在不同阶段处理不同逻辑。

以下,以一个用户信息页面举例,用axios进行post请求,使用node.js连接mysql访问数据并返回给当前form表单。效果图如下:

 

第一步,新建一个form表单

<template>
    <!--label-width另label自适应宽度并且默认向右对齐-->
      <el-form label-width="auto" :key="usertablekey">
        <el-form-item label="账号:">
          <span>{{userList[0].id}}</span>
        </el-form-item>
        <el-form-item label="姓名:">
          <span>{{userList[0].name}}</span>
        </el-form-item>
        <el-form-item label="职业:">
          <span>{{userList[0].job}}</span>
        </el-form-item>
        <el-form-item label="出生日期:">
          <span>{{userList[0].birthday}}</span>
        </el-form-item>
        <el-form-item label="地址:">
          <span>{{userList[0].address}}</span>
        </el-form-item>
      </el-form>
</template>

第二步,初始化各元素的数值

data () {
    return {
      // 用户信息table的key,没有他,form表单还需要触发事件才会更新
      usertablekey: '',
      // 用户信息数组初始化
      userList: [
        {
          id: '',
          name: '',
          job: '',
          address: '',
          birthday: ''
        }
      ]
    }
}

第三步,新建created()方法,并在其中调用初始化数据的方法

// 页面启动时加载函数
  created () {
    this.getuserData()
  }

第四步,写获取数据的方法

// 获取用户信息
    getuserData () {
      // 默认情况下,axios将JavaScript对象序列化为JSON。要以application/x-www-form-urlencoded格式发送数据,可以使用下面qs库对数据进行编码
      this.$axios.post('http://localhost:3000', qs.stringify({
        type: 'user_information',
        // 这里username写死了,自己根据情况可以动态赋值
        username: '123'
      }))
        .then((response) => { // 请求成功处理
          console.log(response.data[0])
          // 赋值用户信息数组
          this.userList[0] = response.data[0]
          console.log(this.userList)
          // 赋值用户table的key
          this.usertablekey = this.userList[0].id
        })
        .catch((error) => { // 请求失败处理
          console.log(error)
        })
    }

第五步,配置node.js文件连接数据库,就大功告成了!

const http = require('http')
const mysql = require('mysql')
const querysrting = require('querystring')

const server = http.createServer((req, res) => {
  // 添加响应头,解决node返回数据给ajax跨域的不兼容的问题
  res.setHeader('Access-Control-Allow-Origin', '*')
  // 设置显示的类型和编译字符方式,不然显示为乱码
  res.writeHead(200, {'Content-Type': 'text/html;charset=utf8'})

  // 初始化一个querystring来赋值post返回的数据
  let postVal = ''
  // 赋值过程
  req.on('data', (chunk) => {
    postVal += chunk
  })
  // 赋值结束
  req.on('end', () => {
    let formVal = querysrting.parse(postVal)
    let type = formVal.type
    let fid = formVal.username// 获取id

    // 连接mysql配置信息
    const conn = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: '123456',
      database: 'testdb'
    })
    conn.connect()
    if (type === 'user_information') {
      conn.query('SELECT * FROM tb_login where id = ?', [fid], (err, results, fields) => {
        if (err) throw err
        if (results.length > 0) {
          console.log(JSON.stringify(results))
          res.end(JSON.stringify(results))
        } else {
          res.end()
        }
      })
    }
    conn.end()
  })
})

server.listen(3000)
Logo

前往低代码交流专区

更多推荐