如何解决如何使用Cloud Firestore向文档添加其他收集数据?
从云存储库(红色)读取数据,这些数据是静态数据,并本地存储在会议室数据库中
class SpotifyTest {
@Test
public void test_spotify_can_browse() throws ParseException,SpotifyWebApiException,IOException {
Track[] Exptracks = new Track[0];
SpotifyApi mockSpotify = mock(SpotifyApi.class);
SearchTracksRequest.Builder mockBuilder = mock(SearchTracksRequest.Builder.class);
SearchTracksRequest mockRequest = mock(SearchTracksRequest.class);
@SuppressWarnings("unchecked")
Paging<Track> mockExecute = (Paging<Track>) mock(Paging.class);
when(mockSpotify.searchTracks("Spirit Of Radio")).thenReturn(mockBuilder);
when(mockBuilder.build()).thenReturn(mockRequest);
when(mockRequest.execute()).thenReturn(mockExecute);
when(mockExecute.getItems()).thenReturn(Exptracks);
Track[] tracks = new Spotify(mockSpotify).browse("Spirit Of Radio");
assertEquals(tracks,Exptracks);
}
}
对象:
private val _fetchedJourneys = MutableLiveData<List<Journey>>()
override val fetchedJourneys: LiveData<List<Journey>>
get() = _fetchedJourneys
override suspend fun getJourneys() {
FirebaseFirestore.getInstance()
.collection(COLLECTION_JOURNEY)
.get()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val fetchedJourneys = arrayListOf<Journey>()
for (queryDocumentSnapshot in task.result!!) {
val journey = queryDocumentSnapshot.toObject(Journey::class.java)
journey.id = queryDocumentSnapshot.id
// At this point I have the journey ID,which in return I
// need to query the progress collection to look for the timestamp and add
// its value it to journey.lastOpened
fetchedJourneys.add(journey)
}
_fetchedJourneys.postValue(fetchedJourneys)
Timber.d("Fetched ${fetchedJourneys.size} journeys remotely")
} else {
Timber.e(task.exception!!.message,"Failed to fetch remote journeys")
}
}
}
还有一些“进度”数据是动态的,每个用户的数据都不同。位于 progress 集合中的字段是一个时间戳,必须添加到@Entity(tableName = "journeys")
@IgnoreExtraProperties
@Parcelize
data class Journey(
@PrimaryKey(autoGenerate = false)
@SerializedName("journey_id")
var id: String = "",val title: String = "",val description: String = "",val image: String = "",@ColumnInfo(name = "last_opened")
var lastOpened: String = ""
) : Parcelable
对象的lastOpened
属性中,并且在userId为documentId。
我是firebase API的初学者,我知道所有调用都是异步的,但是我似乎无法考虑将调用中的属性“ progress”(黄色)添加到对象(红色)的方法到对象。
我可以在应用程序中实现此功能还是需要重新排列保存数据的方式?
解决方法
您用黄色概述的内容将不是“财产”。那将是一个子集合。您可以在其下嵌套更多文档,就像您已经拥有“章节”一样。
没有用于创建子集合的API。只需正常开始向其写入文档,便会在需要时创建它。
如果您要向文档中添加其他字段(例如已经包含描述和图像的问题),则只需在对该文档的引用上调用update()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。