此实例演示了如何在my-music和 my-music-categories 中联表查询。my-music 是音乐数据表,表结构中使用 category_id 关联 my-music-categories 表中的_id:,最终实现在显示音乐列表时,将分类名称显示出来。
联表查询后的返回数据结构:主表某字段foreignKey指向副表时。
{
"主表字段名1": "xxx",
"主表字段名2": "xxx",
"主表内foreignKey指向副表的字段名": [{
"副表字段名1": "xxx",
"副表字段名2": "xxx",
}]
}
先上代码:
<unicloud-db v-slot:default="{data, loading, error, options}"
orderby="last_modify_date desc"
collection="my-music,my-music-categories" loadtime="auto"
where="category_id._id=='61b3691f39bf100001e7ccc1'"
@load="handleLoad" field="_id as id,category_id._id,category_id.name,title,music_src,author,poster,last_modify_date"
:page-size="5">
<view v-if="error">{{error.message}}</view>
<view v-else-if="loading"><text class="loading">Loading…</text></view>
<view class="white-lastmusic" v-for="(item,index) in data" :key="index">
<view class="white-lastmusic-poster" @click="playOne(item)">
<image :src="item.poster||'../../static/imgs/poster-basic4.png'" mode=""></image>
<view class="palyIcon ri-play-fill">
</view>
</view>
{{item.category_id[0].name}} //这里显示的就是联表查询后的分类名称
<view class="font-hidden">{{item.title}}</view>
<view class="fontsize-small fontcolor-secondary">{{item.author||'佚名'}}</view>
<view class="fontsize-small fontcolor-secondary">发行时间:
<uni-dateformat format="yyyy-MM-dd" :date="item.last_modify_date" />
</view>
</view>
</unicloud-db>
有四点需要特别注意:
1.schema中先做关联写法:
//my-music 表的schema
"category_id": {
"bsonType": "string",
"title": "音乐分类",
"description": "分类 id,参考`uni-news-categories`表",
"foreignKey": "my-music-categories._id"
},
2. field 字段的写法不同: 联表前写的按category_id查询,联表后不能再写 category_id 了。而要使用关联表的写法,有两种:一是 .的写法 category_id._id,category_id.name 二是使用花括号{}: category_id {_id,name}
field=”_id as id,category_id._id,category_id.name,title,music_src,author,poster,last_modify_date”
3.where的写法不同:联表前直接 写where=”category_id==’61b3691f39bf100001e7ccc1′”
联表后必须这样写: where=”category_id._id==’61b3691f39bf100001e7ccc1′”
4.显示联表查询的数据:
{{item.category_id[0].name}} //这里显示的就是联表查询后的分类名称
5.联表的字段也可以as 重命名
eld=”_id as id,category_id._id,category_id.name as othername,title,music_src,author,poster,last_modify_date”