Как l oop каждый документ и получить его данные - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в javascript и новичок в облачных функциях Firebase, я хочу знать, как повторять каждый документ, который возвращает мой запрос, и получать из каждого документа deviceToken моего пользователя, это то, что я сделал

    let docRef = db.collection('user').doc(userId);
    let shopUserRef = db.collection('user').where('shop', '==', shopId);

    var orderStatusDetail;
    var notificationTitle;
    switch(orderStatus){
        case 0:
            notificationTitle = "You have a new order ! ?️"
            orderStatusDetail = String("A new order has arrived, check it out")
            docRef = shopUserRef;
            break;
        case 1:
            notificationTitle = "Hey there! ?"
            orderStatusDetail = "✅ Your order is ready"
            break;
}

 return docRef.get().then(userDoc => {
       const deviceToken = userDoc.data().deviceToken
        const payload = {
        notification: {
            title: notificationTitle,
            body: orderStatusDetail
        }
    }
        console.log("userId:"+userId+"orderstatus:"+orderStatus+"deviceToken"+deviceToken)
        return admin.messaging().sendToDevice(deviceToken,payload)
  });

Итак, этот код прост, если регистр равен 0 (orderStatus == 0), мне нужно отправить уведомление только владельцу магазина, поэтому я использую другую ссылку для получения этого пользовательского устройства. токен, но здесь может быть более одного пользователя с таким идентификатором магазина, поэтому я хочу перебрать эти документы, чтобы получить каждый идентификатор и отправить им все уведомления о новом заказе.

Здесь docRef - это просто Клиент, который купил продукт и уведомление должно прибыть к ним.

Но в case 0 мне нужно отправить уведомление всем покупателям магазина, идентификаторы

Я хочу знать, как это сделать для l oop здесь

return docRef.get().then(userDoc => {
   for(user in userDoc) {
    // I dont know if this is the correct for loop way to get each document data
}
...

1 Ответ

1 голос
/ 23 апреля 2020

Проверить https://firebase.google.com/docs/firestore/query-data/queries#execute_a_query

Звучит так, будто вы ищете

docRef.get()
    .then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            // doc.data() is never undefined for query doc snapshots
            console.log(doc.id, " => ", doc.data());
        });
    })
    .catch(function(error) {
        console.log("Error getting documents: ", error);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...