Получить данные из WatermelonDB в React - PullRequest
0 голосов
/ 24 февраля 2019

Я использую WatermelonDB в качестве локальной базы данных моего приложения.У меня есть метод getPlaces() внутри класса AccessDB:

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

Вызов getPlaces() с использованием AccessDB.getPlaces() с асинхронной работой и ожиданием работ.Как я могу получить результаты, соответствующие запросу?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Переменная 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)}
})()

При отладке с помощью консоли вы должны быть осторожны.log, as

1) console.log пропускает выходные данные, если выполняется быстро один за другим, например, если вы console.log каждый раз в цикле for places[place].name и выше

2) если вы console.log(places) вы видите то же самое, как если бы вы console.log(database), что очень сбивает с толку.Вы ожидаете увидеть [Объект объекта], [Объект объекта] ..., который вы видите, когда используете alert(places).

0 голосов
/ 24 февраля 2019

Может быть, я не совсем понимаю.Но пытались ли вы поместить запрос в ваш query метод

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

Также не забывайте, что getPlaces является асинхронным и вам нужно async\await для получения возвращаемых данных.

...