通过vue前端的房间分类查询功能,从送后端返回同一类型的房间对象列表,并在前端页面从上到下显示房间信息,给出对应代码
时间: 2023-06-07 13:10:24 浏览: 78
很高兴为您提供相关的代码。首先,在前端,我们需要定义一个房间分类查询的方法,根据传入的类型参数,向后端发送请求获取同一类型的房间列表,然后在页面上显示每个房间的信息。代码如下:
```
<template>
<div>
<h1>房间分类查询</h1>
<select v-model="type">
<option value="">所有类型</option>
<option v-for="t in types" :value="t">{{t}}</option>
</select>
<button @click="searchRooms">查询</button>
<div v-if="rooms.length === 0">没有符合条件的房间</div>
<div v-for="room in rooms" :key="room.id">
<h2>{{room.name}}</h2>
<p>类型:{{room.type}}</p>
<p>价格:{{room.price}}</p>
<p>描述:{{room.description}}</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
types: [], // 所有房间类型
type: '', // 选中的类型
rooms: [] // 查询到的房间列表
}
},
mounted() {
// 获取所有房间类型
this.getRoomTypes()
},
methods: {
// 获取所有房间类型
async getRoomTypes() {
// 发送请求,获取所有房间类型
const res = await this.$http.get('/api/room/types')
this.types = res.data
},
// 查询房间
async searchRooms() {
// 发送请求,获取同一类型的房间列表
const params = { type: this.type }
const res = await this.$http.get('/api/room', { params })
this.rooms = res.data
}
}
}
</script>
```
接下来,在后端,我们需要定义一个处理房间查询请求的接口,从数据库中获取同一类型的房间列表,然后将数据返回给前端。代码如下:
```
const express = require('express')
const router = express.Router()
const Room = require('../models/room')
// 获取所有房间类型
router.get('/types', async(req, res) => {
try {
const types = await Room.distinct('type')
res.send(types)
} catch (err) {
console.error(err)
res.status(500).send(err.message)
}
})
// 查询房间
router.get('/', async(req, res) => {
try {
const query = req.query
const rooms = await Room.find(query)
res.send(rooms)
} catch (err) {
console.error(err)
res.status(500).send(err.message)
}
})
module.exports = router
```
这样,当用户在前端选择了某个类型并点击查询按钮时,前端会向后端发送同一类型房间查询的请求,后端会处理该请求并返回符合条件的房间列表,然后前端再将房间列表展示在页面上。
阅读全文