我正在使用WatermelonDB作为我的应用程序的本地数据库。
我在AccessDB类中有一个方法getPlaces()
:
static async getPlaces() {
const postsCollection = database.collections.get('places');
const allPosts = await postsCollection.query().fetch();
return allPosts;
}
使用getPlaces()
异步调用a AccessDB.getPlaces()
并等待。如何获取与查询匹配的结果?
答案 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
来获取返回数据。