用法形如:`author as book_author`,意思是将数据库的author字段重命名为book_author。
仍以上面的order表和book表为例
```js
// 客户端联表查询
constdb=uniCloud.database()
db.collection('book')
.where('title == "三国演义"')
.field('title as book_title,author as book_author')
.get()
.then(res=>{
console.log(res);
}).catch(err=>{
console.error(err)
})
```
上述查询返回结果如下
```js
{
"code":"",
"message":"",
"data":[{
"_id":"3",
"book_author":"罗贯中",
"book_title":"三国演义"
}]
}
```
> _id是比较特殊的字段,如果对_id设置别名会同时返回_id和设置的别名字段
例:
```js
// 客户端联表查询
constdb=uniCloud.database()
db.collection('book')
.where('title == "三国演义"')
.field('_id as book_id,title as book_title,author as book_author')
.get()
.then(res=>{
console.log(res);
}).catch(err=>{
console.error(err)
})
```
上述查询返回结果如下
```js
{
"code":"",
"message":"",
"data":[{
"_id":"3",
"book_id":"3",
"book_author":"罗贯中",
"book_title":"三国演义"
}]
}
```
#### 联表查询时字段别名
联表查询时字段别名写法和简单查询类似
```js
// 客户端联表查询
constdb=uniCloud.database()
db.collection('order,book')
.where('book_id.title == "三国演义"')
.field('book_id{title as book_title,author as book_author},quantity as order_quantity')// 这里联表查询book表返回book表内的title、book表内的author、order表内的quantity,并将title重命名为book_title,author重命名为book_author,quantity重命名为order_quantity
副表字段使用别名需要注意,如果写成`.field('book_id.title as book_id.book_title,book_id.author,quantity as order_quantity')` book_title将会是由book_id下每一项的title组成的数组,这点和mongoDB内数组表现一致
```js
constdb=uniCloud.database()
db.collection('order,book')
.where('book_id.title == "三国演义"')
.field('book_id.title as book_title,book_id.author as book_author,quantity as order_quantity')// book_id.title、book_id.author为副表字段,使用别名时效果和上一个示例不同,请见下方说明
当一个前端操作数据库的方式不能完全满足需求,仍然同时需要在云端再执行一些云函数时,就在前端发起数据库操作时,通过`db.action("someactionname")`方式要求云端同时执行这个叫someactionname的action。还可以在权限规则内指定某些操作必须使用指定的action,比如`"action in ['action-a','action-b']"`,来达到更灵活的权限控制。