Я использую WatermelonDB в качестве локальной базы данных своего приложения.
У меня есть метод getPlaces() внутри класса AccessDB:
static async getPlaces() {
const postsCollection = database.collections.get('places');
const allPosts = await postsCollection.query().fetch();
return allPosts;
}
Вызов getPlaces() с помощью AccessDB.getPlaces() с асинхронным вызовом и ожиданием работает. Как я могу получить результаты, соответствующие запросу?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Может я не до конца понимаю. Но пытались ли вы поместить запрос в свой метод query?
const allPosts = await postsCollection.query(Q.where('is_verified', true)).fetch();
Также не забывайте, что getPlaces является асинхронным и вам нужен async\await для получения возвращаемых данных.
Переменная 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.info(buffer)
} catch(e) {console.info(e)}
})()
Вы должны быть осторожны при отладке с помощью console.info, так как
1) console.info пропускает выходные данные, если выполняется быстро один за другим, например. если вы console.info places[place].name каждый раз в цикле for выше и
2) если вы console.info(places) видите то же самое, что и вы console.info(database), что очень сбивает с толку. Вы ожидаете увидеть [Объект-объект], [Объект-объект]..., который вы видите, когда используете alert(places).
Ваш второй пункт действительно свел меня с ума, я этого не знал. Спасибо.
Когда я напечатал
allPosts, я понял, чтоallPostsсоответствует моему объекту базы данных. То естьdatabase.collections.get('places') = databaseПочему не извлекается эти места?