FIrebase firestore: методы map / indexOf не работают для данных, возвращаемых методом 'array-contains'? - PullRequest
0 голосов
/ 15 апреля 2020

вот что я пытаюсь сделать с облачной функцией Firebase:

  1. Прослушивание изменений, которые пользователь вносит в информацию пользователя, и хранение старой и новой информации. (например, изменение изображения профиля)
  2. Поиск всех записей с использованием запроса группы сбора с использованием старой информации. Подколлекции содержат документ, который содержит массив информации о пользователях, рекомендовавших публикации, и загружает их.
  3. Замените старую информацию пользователя в загруженном массиве новой, а затем обновите документ.

Вот проблема, с которой я сталкиваюсь: хотя я могу заполнять документы и сохранять их данные, используя метод «array-contains», со старой информацией о пользователях, в то время как я пытаюсь сопоставить загруженный массив с тем же информация, это не удается. Когда я проверял с помощью метода Array.indexOf (), он возвращает -1. Это сбивает с толку, потому что я использую одну и ту же информацию для операций загрузки и сопоставления.

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

 //Let's say I have 'olduserinfo', which is the previous user information, and 'newuserinfo, which is the updated one.
 db.collectionGroup('recommended').where('users','array-contains',olduserinfo).get() 
 //This one returns relevant documents without any problem.
   .then((querysnapshot)=>{
       querysnapshot.forEach((doc)=>{
             const olddata=doc.data().users;
             //Below is the part where the code fails. When I checked with Array.indexOf(), it always returns -1.
             const newdata=olddata.map((item)=>{return item===olduserinfo ? newuserinfo : item;});  
             doc.update({users:newuserinfo});
        })
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...