如何使用Firestore对已过滤的数据进行分页

时间:2019-10-05 22:04:12

标签: javascript firebase google-cloud-firestore

当我过滤Firestore数据时,我仍然得到很大的子集,并希望对这些数据进行分页。但是默认的firestore分页查询(startAfter / endAfter)无法结合我的经验中的where子句。

我知道如何在Firestore中过滤数据,也知道如何分页。但是我很想将这些功能结合起来,有人可以帮助我实现这一目标。或至少在需要时如何重组我的数据。

@RunWith(JUnit4.class)
public class DbManagerAndroidTest
{
    private AudioFile.AudioFileDao audioFileDao;
    private DbManager db;

    @Before
    public void createDb()
    {
        Context ctx = InstrumentationRegistry.getInstrumentation().getContext();

        db = Room.inMemoryDatabaseBuilder(ctx, DbManager.class).build();
        audioFileDao = db.audioFileDao();
    }

    /**
     * Test CRUD
     */
    @Test
    public void writeAndRead()
    {
        AudioFile audioFile = new AudioFile.Builder("title")
            .withArtist("artist")
            .withDuration(5)
            .withPath("/this/is/path")
            .build();

        audioFileDao.insertAudioFile(audioFile);
        assertTrue(db.audioFileDao().getAll().size() > 0);
        assertEquals("title", db.audioFileDao().getAll().get(0).getTitle());

        audioFile.setArtist("yo-mama");
        //It won´t update
        audioFileDao.updateAudioFile(audioFile);

        assertEquals("yo-mama", audioFileDao.getAudioFile("title").getArtist());
        //It won´t delete
        audioFileDao.deleteAudioFile(audioFile);
        assertEquals(0, audioFileDao.getAll().size());
    }

    @After
    public void tearDown(){
        db.clearAllTables();
        db.close();
    }
}

1 个答案:

答案 0 :(得分:1)

该错误消息告诉您缺少查询索引。按照错误消息中给控制台的链接并创建它,然后您应该能够执行查询。