在React中从WatermelonDB获取数据

时间:2019-02-24 16:03:52

标签: javascript database reactjs react-native watermelondb

我正在使用WatermelonDB作为我的应用程序的本地数据库。 我在AccessDB类中有一个方法getPlaces()

static async getPlaces() {
        const postsCollection = database.collections.get('places');
        const allPosts = await postsCollection.query().fetch();
        return allPosts;
}

使用getPlaces()异步调用a AccessDB.getPlaces()并等待。如何获取与查询匹配的结果?

2 个答案:

答案 0 :(得分:1)

变量allPosts是一个数组,其中包含所有places。因此,要访问位置的属性,您可以在其他类中进行:

import AccessDB from './AccessDB';

然后在某个地方

(async () => {
    try {
        const places = await AccessDB.getPlaces();

        var buffer = '';
        for (place in places) {
            buffer += places[place].name + '\n'
        }
        console.log(buffer)
    } catch(e) {console.log(e)}
})()

使用console.log进行调试时必须小心,如

1)console.log如果一个接一个地快速执行,则跳过输出,例如如果您每次在上方的for循环中console.log places[place].name

2)如果您console.log(places)会看到与您console.log(database)相同的感觉,这非常令人困惑。您会期望看到[Object object],[Object object] ...,在使用alert(places)时会看到。

答案 1 :(得分:0)

也许我不太了解。但是您是否尝试将查询放入query方法中

const allPosts = await postsCollection.query(Q.where('is_verified', true)).fetch();

也不要忘记getPlaces是异步的,并且您需要 async\await 来获取返回数据。