Заказать по ключу и удалить первую запись запроса - PullRequest
0 голосов
/ 11 сентября 2018

У меня следующая структура БД:

enter image description here

Мне нужно удалить самый старый токен. Как я могу заказать с помощью createAt (сначала самый старый) и удалить только первый токен в результате запроса?

Спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете использовать метод orderByChild и сортировать по limitToFirst (или limitToLast из-за ваших отрицательных временных меток), которые получат первая созданная временная метка.

Не уверен, почему ваши метки времени имеют - перед ними. Пример в Typescript может выглядеть примерно так:

function searchAndDeleteTokens(userId: string): Promise<void> {
  return firebase.database().ref(`/users/${userId}/tokens`)
    .orderByChild('createdAt') 
    .limitToFirst(1)
    .once('value')
    .then(async snapshots => {
      snapshots.forEach(snapshot => {
        const tokenKey = snapshot.key;

        await deleteToken(userId, snapshot.key);

        return false;
      });
    });
}

async function deleteToken(userId: string, tokenId: string): Promise<void> {
  return firebase.database().ref(`/users/${userId}/tokens/${tokenId}`).delete();
}


searchAndDeleteTokens('133'); // User ID 133
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...