clientDB:unicloud-db联表查询实战及注意事项

此实例演示了如何在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&#8230;</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”

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注