У меня есть эта картинка над проблемой. Это кажется сложным, но это не так. В основном это отражает то, о чем я расскажу ниже:
когда я открываю свой гараж вручную, этот баг-проект (приложение для Android и AOG). Потому что не отправляется 100 в значение поля .openPercent. Я могу работать только вручную, потому что openPercent равен 0, а garagestate - false
Поскольку garagestate является ложным, я должен сказать G. Home: Закройте гараж. Он отправит 0, и, поскольку в value.openPercent уже есть 0, гараж не будет закрыт. Даже говоря: Закрыть гараж AOG должен был бы отправить 100 (в данном случае конкретный), чтобы сработал триггер на бэкэнде / Observer / relay < / strong> и гараж закроется
Я использую willReportState true. Я пытался решить проблему в намерении запроса, но не смог
Если я создам другую облачную функцию, чтобы изменить значение openPercent и оставить ее в соответствии с garagestate (field), я могу сломать backend / Observer / relay и гараж закрыть и открыть из-за быстрого изменения значения value. openPercent
5)
Лучшим решением в этом случае (мне нужна ваша помощь в этом) было бы то, что всякий раз, когда я говорю: Открыть и / или закрыть гараж, AOG будет отправлять значение, обратное значение. openPercent того, что есть. Если бы было 0, он отправил бы 100, а если бы было 100, он бы отправил 0.
Как лучше всего реализовать предложенное выше решение?
На этот вопрос был дан ответ: Облачные функции / Firestore. Как срабатывать, когда поля остаются в разных документах
Другими словами, были созданы новые облачные функции, чтобы сделать его совместимым.
const { alarmstate } = targetDoc.data()
, за которым следуетconst { garagestate } = targetDoc.data()
в следующей строке. Почему вы объявляете как alarmstate, так и garagestate как ссылки на один и тот же документ? Просто пытаюсь понять ваш код, прежде чем давать какие-либо глупые ответы. - person fabc   schedule 10.05.2021