Как получить два запроса из магазина? - PullRequest
0 голосов
/ 10 января 2020

Я использую redux и хочу знать, как принимать и обрабатывать два запроса из firesotre.

export function getBlackList(data) {
    return (dispatch, getState) => {

        let db = loadFB().firestore();
        let query = db.collection('users').where("report.total_point",">",0).orderBy("report.total_point","asc");
        return query.get().then(docs=>{
            let result = [];

            console.log(result);

            docs.forEach(doc=>{
                let user = doc.data();
                user.id = doc.id;
                result.push(user);
            })
            dispatch({
                type: types.SET_USER_LIST,
                data: result,
                page : 1
            })


        })
    }
}

Через код, представленный выше, компонент обрабатывается через диспетчеризацию.

Я получаю запрос Но я хочу знать, как собрать два значения запроса и отсортировать их.

db.collection('users').where("memo",">","0").orderBy("memo","asc");

Есть ли способ решить его с помощью «все обещание»?

Посмотрите жду хорошего решения.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Вы не можете использовать Promise.all для запроса двух значений из одной коллекции, Promise.all используется для извлечения данных из группы коллекций [различных коллекций], а не из одной коллекции.

Чтобы запросить два значения вместе , используйте код ниже:

let query: db.collection('users').where("memo",">","0").where("memo2","<","3");

И после того, как вы сможете их отсортировать:

query.orderBy("memo","asc");
0 голосов
/ 10 января 2020

Ваш запрос вернет несколько элементов. Собрав их вместе, вы можете использовать map и sort, если вам нужно.

Тогда вызов диспетчеризации для избыточного выглядит мне хорошо.

query.get().then(docs => {
  const users = docs.map(doc => ({
    id: doc.id,
    ...doc.data(),
  }));
  // .sort(...)

  dispatch({
    type: types.SET_USER_LIST,
    data: users,
    page: 1,
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...