Ember fire не синхронизируется должным образом при очистке массива

Я храню массив объектов в FireBase и использую push метод с сервера, как показано ниже:

  firebaseRef.child('colors').push(body, (error) => {
    if(error) {
      res.send(500, error);
    }
    else {
      res.send(200);
    }

    return next();
  });

И на клиенте я использую:

model() {
  return this.store.findAll('color');
}

У меня есть операция, где я хочу очистить массив, и в настоящее время я использую set([]) как видно ниже:

firebaseRef.child('colors').set([], (error) => { ... });

Если я посмотрю на данные с портала управления, то увижу узел цветов и все элементы будут удалены; однако клиент ember по-прежнему показывает все элементы в массиве. Даже после того, как я добавлю элемент в массив, чтобы сделать его длиной 1, он все равно будет отображать, возможно, 24, если у него было 23 ранее. Только после того, как я полностью обновлю клиент, он правильно распознает длину массива.

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

1 ответ

Вы очищаете данные непосредственно от Firebase, избегая при этом хранилища угасающих данных. Чтобы сделать это правильно, вы должны сделать это "Ember Way", очистив его из хранилища данных локально, что затем подтолкнет те же самые изменения к базе данных для вас.

Выясните, как очистить цветовые модели от янтарных данных, и вы получите ожидаемые результаты

Другие вопросы по тегам