4

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

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

getPlaces()使用AccessDB.getPlaces()async 和 await调用可以工作。如何获取与查询匹配的结果?

4

2 回答 2

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 会跳过输出,例如,如果您places[place].name在上面的 for 循环中每次使用 console.log 并且

2)如果你console.log(places)看到的和你一样的,console.log(database)这很令人困惑。您会期望看到 [Object object],[Object object]...,当您使用alert(places).

于 2019-02-25T00:25:30.790 回答
0

也许我没有完全理解。但是您是否尝试将查询放入您的query方法中

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

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

于 2019-02-24T18:19:22.457 回答