Обновление документа Firestore приводит к изменению логического типа поля на строку - PullRequest
0 голосов
/ 19 июня 2020

Я запустил этот документ firestore вручную с консоли, указав enabled как логический тип. Сейчас я создаю больше конструкций для его обновления в angular, см. Код ниже.

  activateMenuItem(venueId: string, menuId: string, menuItemId, enabled: boolean) {
    const update = {
      'enabled': false
    };

    update.enabled = enabled;
    const db = this.firestore.firestore;
    from(db.collection('venues')
      .doc(venueId)
      .collection('menus')
      .doc(menuId)
      .collection('items')
      .doc(menuItemId)
      .update(update))
      .subscribe(value => {
        console.log("On next");
      }, (error) => {
        console.log("on error" + error);
      });
  }

Все работает правильно, однако, когда я устанавливаю для поля включено логическое значение, тип поля впоследствии изменяется на строку.

До

Before with right data type

После

After with wrong data type

Дополнительный код того, как он вызывается.

  onChange(enabled) {
    console.log("Changing " + enabled);
    this.service.activateMenuItem(this.venueId, this.menuId, this.menuItemId, enabled);
  }

1 Ответ

0 голосов
/ 19 июня 2020

Этот ответ был изменен в разговоре с комментатором. Настоящий ответ больше связан со следующим.

  onChange(enabled) {
    console.log("Changing " + enabled);

    this.service.activateMenuItem(this.venueId, this.menuId, this.menuItemId, enabled);
  }

Похоже, когда я отправляю это поле как логическое, информация о типе все еще была string.

Вскоре после этого я нашел аналогичную статью, в которой есть работоспособное решение.

Очевидно, назвать это типом enabled было недостаточно. Мне нужно было сделать его логическим объектом.

Это обеспечит сохранение в документе хранилища данных своего предыдущего типа данных.

    const update = {
      'enabled': false
    };

    update.enabled = Boolean(enabled);

...