【问题标题】:how to create room database with user movies and favourites?如何使用用户电影和收藏夹创建房间数据库?
【发布时间】:2020-08-17 22:46:25
【问题描述】:

我打算创建一个房间数据库来模拟一个rest-api,所以我想做的是在数据库中存储数据作为一个rest-api。我的想法是有一个名为电影的表(id、名称等),然后用户可以将此电影保存为收藏夹,所以,我想有一个用户表(总是一样的,因为它是一个假的),然后我想在 users 表中添加一个名为 favourites 的电影列表。

还有其他优化方式吗?

我的想法是:

用户

id name age favouriteList : List

电影

id 名称流派持续时间

目标是:

询问电影列表并知道当前用户最喜欢的电影,但总是返回相同的列表,只是在演示时我必须能够检查哪个是最喜欢的,哪个不是。

【问题讨论】:

    标签: java android android-room


    【解决方案1】:

    是的。有一种方法可以用数据预先填充 Room。你所要做的就是在你的配置中调用一个函数:

    如果您将 db 文件放在 assets 文件夹中:

    Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")  
        .createFromAsset("database/myapp.db")
        .build()  
    

    不过,有一些细节可能会对您有所帮助,因此请浏览this 文章一次。

    你也可以通过the official docs

    编辑:对于您的其他问题:如何组织表格。你的流程是正确的。首先有一个用户表:

    @Entity(tableName = "user)
    data class User(
      @PrimaryKey
      @ColumnInfo(name = "id")
      val id: Int,
      @ColumnInfo(name = "favorite_movies")
      val favoriteMovies: List<Movie>,
      ... other fields here
    )
    

    然后在Movie 实体上:

    @Entity(tableName = "movies",
    foreignKeys = [ForeignKey(
            entity = User::class,
            parentColumns = arrayOf("id"),
            childColumns = arrayOf("user_id"),
            onDelete = CASCADE
        )]
    )
    data class Movie(
      @PrimaryKey
      @ColumnInfo("id")
      val id: Int,
    
      @ColumnInfo(name = "user_id", index = true)
      val userId: Int,
    
      .... other fields here
    )
    

    【讨论】:

    • 感谢您的回答,关于数据的组织?我的意思是,我想要一个用户(现在总是一样的),然后我有一个预定义的电影列表,然后用户可以将电影标记为他的最爱,你将如何创建这些实体?
    • 因为对我来说,我会混淆我询问电影列表然后从那里得到我最喜欢的电影的方式,我会说我必须按 user_id 搜索和过滤
    • 我明白了,但是通过这种结构,我可以要求所有电影并为所要求的确切用户获取收藏夹吗?例如,如果我有电影列表,那么在电影内部有一个 user_id 列表和一个名为 favorite 的属性(首先是 false)不是更好吗?我的意思是我想了解我应该如何获取所有电影,但带有标志或其他东西让登录的用户知道这部电影是否喜欢
    • 因为我的意思是,不是有一个屏幕来显示我的最爱,而是让所有的列表和用户知道哪个是他最喜欢的。
    • 您可以询问是否可以在用户喜欢的电影中找到该电影。它更简单。 if(userMovies.contains(movie))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2020-11-18
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多