我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解vue+nodejs获取多个表数据的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解vue+nodejs获取多个表数据的方法

读取两个表的数据

将用户及图像联系在一起

效果

前端实现

修改关联的时候,前端向后端传入array[number],后端存为字符串

这时在前端获取数据时,需要循环处理为数字数组


<template>
    <div>
        <el-table :data="state.tableData" border style="width: 100%">
            <el-table-column prop="name" label="Name" width="180" />
            <el-table-column prop="relation" label="Relation" width="180" ></el-table-column>
            <el-table-column prop="path" label="Path">
                <template #default="scope">
                    <div v-for="(item, index) in scope.row.path" :key="index" style="display:inline-block">
                        <img
                            :class="lazy" data-src="'http://localhost:3000//' + item.path"
                            style="width: 100px;height:100px;margin:0 10px"
                        />
                    </div>
                </template>
            </el-table-column>
            <el-table-column label="Operations" width="120">
                <template #default="scope">
                    <el-button
                        type="text"
                        size="small"
                        @click.prevent="edit(scope.row)"
                    >
                        <el-icon>
                            <edit />
                        </el-icon>
                    </el-button>
                </template>
            </el-table-column>
        </el-table>
        <el-dialog v-model="state.dialogVisible" width="80%">
            <el-transfer
                v-model="state.rightValue"
                style="text-align: left; display: inline-block"
                filterable
                :titles="['Source', 'Target']"
                :button-texts="['To left', 'To right']"
                :format="{
                noChecked: '${total}',
                hasChecked: '${checked}/${total}',
                }"
                :data="state.data"
            >
                <template #default="{ option }">
                    <span>{{ option.key }} - {{ option.label }}</span>
                </template>
            </el-transfer>
            <p>
                <el-button
                    type="primary"
                    size="medium"
                    @click.prevent="commit"
                >提交
                </el-button>
            </p>
        </el-dialog>
    </div>
</template>
<script lang="ts">
import {defineComponent, reactive} from 'vue'
import {relationlist,uploadorder,editrelation} from '../utils/api'
import {
    ElMessage, ElDialog
} from 'element-plus';
import { Edit } from '@element-plus/icons';
export default defineComponent({
    name : 'relation',
    components:{
        Edit, ElMessage, ElDialog
    },
    setup() {
        const state = reactive({
            tableData:[],
            dialogVisible:false,
            data:[],
            rightValue:[],
            editdata:{}
        })
        const init = function(){
            relationlist().then((res)=>{
                if (res.code === 200) {
                    res.list.forEach((ele)=>{
                        if(ele.relation){
                            ele.relation = ele.relation.split(',')
                            for (let i = 0; i < ele.relation.length; i++) {
                                ele.relation[i] = Number(ele.relation[i]);
                            }
                        }
                    })
                    state.tableData = res.list
                }
            })
        }
        const init1 = function(){
             uploadorder().then(res => {
                if (res.code === 200) {
                    let data = []
                    res.list.forEach(ele => {
                        data.push({
                            key:ele.id,
                            label:ele.name
                        })
                    });
                    state.data = data
                }
            })
        }
        const edit = function(row){
            state.editdata = row;
            state.dialogVisible = true;
            state.rightValue = row.relation||[];
        }
        const commit = function(){
            let data = {
                rightvalue:state.rightValue,
                ...state.editdata
            }
            editrelation(data).then((res)=>{
                if(res.code === 200){
                    ElMessage.success(res.msg)
                    state.dialogVisible = false
                    init() 
                }else{
                    ElMessage.error(res.msg)
                }
            })
        }
        init()
        init1()
        return {
            state,
            edit,
            commit
        }
    }
})
</script>

后端实现


//获取关联列表
router.get('/relationlist',async (req,res,next)=>{
  const result = await db.select(`SELECT * FROM user`)
  for (let i = 0; i < result.length; i++) {
    let ele = result[i];
    let uploadres = await db.select(`SELECT path FROM upload where id in (${ele.relation})`)
    ele.path = uploadres 
  }
  res.send(Success(result));
})
//修改关联列表
router.post('/editrelation',async (req,res,next)=>{
  let {id,rightvalue} = req['body']
  console.log(rightvalue);
  if(!id || !rightvalue){
    res.send(MError('请选择后再提交'))
    return
  }
  const result = await db.update('user', { relation:rightvalue}, ` WHERE id = ${id}`);
  if(result){
    res.send(Success(result))
    return
  }else{  
    res.send(MError('修改失败,请再次尝试'))
    return
  }
})

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解vue+nodejs获取多个表数据的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue+nodejs获取多个表数据的方法是什么

这期内容当中小编将会给大家带来有关vue+nodejs获取多个表数据的方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。读取两个表的数据将用户及图像联系在一起效果前端实现修改关联的时候,前端向后端传
2023-06-22

Vue获取表单数据的方法是什么

Vue获取表单数据的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。需求使用Vue收集如下用户数据:获取数据并提交代码实现:将value的值与变量属性进行绑定v-m
2023-06-22

SpringMVC获取表单数据的方法

本篇内容介绍了“SpringMVC获取表单数据的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SpringMVC获取表单数据1、实体类p
2023-06-20

Android编程获取GPS数据的方法详解

本文实例讲述了Android编程获取GPS数据的方法。分享给大家供大家参考,具体如下: GPS是Android系统中重要的组成部分,通过它可以衍生出众多的与位置相关的应用。 Android的GPS有一个专门的管理类,称为LocationMa
2022-06-06

Android编程获取图片数据的方法详解

本文实例讲述了Android编程获取图片数据的方法。分享给大家供大家参考,具体如下:网络的访问在我们日常生活中太重要了,如果没有网络我们的生活将会是什么样子呢?Android手机和浏览器也是一样的,也可以通过网络通讯获取数据,如调用webs
2023-05-30

JS获取表单中数据formdata的方法

这篇文章主要介绍了JS获取表单中数据formdata的方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。在文章正式开始之前呢,先介绍一个知识点,那就是var和let的区别,查看了各路大佬的文章,也经过各种尝试,最终得出的
2023-07-06

C#水晶报表数据获取的方法

这篇文章主要讲解了“C#水晶报表数据获取的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#水晶报表数据获取的方法”吧!C#水晶报表数据获取方法有很多,那么这里主要向你介绍一个通过提取模
2023-06-17

阿里云数据库的获取方法与使用详解

阿里云数据库是阿里云推出的一款高性能、高可用、安全的云数据库服务。它能够满足用户的各种业务需求,包括但不限于数据存储、数据处理、数据安全等。本文将详细说明如何获取阿里云数据库,并对数据库的使用进行详解。一、获取阿里云数据库获取阿里云数据库非常简单,只需要几步操作即可:登录阿里云账号:首先,你需要登录阿里云账号,如
阿里云数据库的获取方法与使用详解
2023-11-03

PHP获取表单数据的方法有哪几种

PHP获取表单数据的方法有:1、使用预定义变量“$_GET”,可获取GET方法提交的数据;2、使用预定义变量“$_POST”,可获取POST方法提交的数据;3、使用预定义变量“$_REQUEST”,GET和POST方法提交的数据都可获取。
2017-02-24

php获取form表单数据的方法有哪些

在PHP中,有以下几种方法可以获取form表单数据:1. 使用$_POST数组:$_POST是一个预定义的全局变量,用于收集通过POST方法提交的表单数据。可以通过$_POST['name']来获取表单中name属性对应的值。2. 使用$_
2023-08-17

Sql在多张表中检索数据的方法详解

目录1.内连接2.跨数据库连接3.自连接4.多表连接5.复合连接条件6.隐式连接语法7.外连接8.多表外连接9.自外部连接10.USING子句11.自然连接12.交叉连接13.联合1.内连接各表分开存放是为了减少重复信息和方便修改,需要时
2023-02-16

编程热搜

目录