数据关联

2019-01-13  本文已影响5人  sweetBoy_9126

我们的需求是需要在一个歌单(playList)下展示多首歌,比如我们现在有三首歌song,它们都有一个id,我们最初的办法是在playList里存一个songs然后里面分别存歌曲的id,但是如果我需要拿到每首歌的name,我还得对songs里面对应的id再分别取发送请求,这时候如果有一百首歌的话,那么它就会先对playList发送一次请求拿到songs的id,然后再分别对每个id发请求也就是需要请求101次,这就是只存id的缺陷
解决方法:使用数据关联
在leancloud里使用一对多关系的数据关联

var Song = AV.Object.extend('Song')
var song = new Song()
song.set('name','111')

var Playlist = AV.Object.extend('playList')
var playlist = new Playlist()
playlist.set('name','专辑1')
//只需要添加下面一行,就可以让song属于playlist,也就是前面是子元素后面是父元素
song.set('dependent',playlist)
song.save()

运行上面代码后发现Song里面新添加了一个name是111的歌曲,这首歌曲多了一个dependent而它的id就是playList的id

现在这种方案就是一个playlist里面有一个id,然后有一个name,之后song里面的歌曲都有自己的id和name,然后还有一个dependent存的是playlist的id,所以现在只需要发一个请求拿到playlist,然后根据playlist的id再发一次请求就能找到song下面所有dependent为playlist的id的所有歌曲

取消关联状态,从当前数据下删除子数据

只需要调用更新api,把dependent设置为null

var song = AV.Object.createWithoutData('Song', songId);
 // 修改属性
song.set('id',songId)
song.set('dependent', null);
 // 保存到云端
 return song.save()
上一篇下一篇

猜你喜欢

热点阅读