Cloud Firestore Function Javascript: запуск функции с помощью запроса whereEqualTo - PullRequest
0 голосов
/ 03 ноября 2018

В Android мы можем слушать внутри коллекции с помощью простых запросов / составных запросов, задав запрос следующим образом.

mQuery = mDatabase.collection("Users")
            .document(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .collection("Request").whereEqualTo("status","received")
            .whereEqualTo("type","friend_request")
            .orderBy("time", Query.Direction.DESCENDING)
            .limit(5);

Затем настройте слушателя на основе этого запроса следующим образом.

 mQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
            //If something went wrong
            if (e != null)
                Log.w(TAG, "ERROR : ", e);...//foreach loop

Могу ли я делать подобные вещи с помощью Cloud Function? В настоящее время я использую эту строку кода, и она работает.

functions.firestore.document("Users/{user_id}/Notifications/{notification_id}").onCreate((added, context) => {

Но для некоторых изменений, я хотел бы вызвать функцию только в том случае, если поле документа равно чему-то, тогда я думаю, что цикл foreach?

Другое дело, как мне теперь получить идентификатор документа из коллекции «Уведомления», если запросы возможны, теперь я использую подстановочный знак, а затем извлекаю его вот так.

const notification_id = context.params.notification_id;

1 Ответ

0 голосов
/ 03 ноября 2018

С помощью триггеров Cloud Functions для Firestore вы можете только указать, какие коллекции и документы вызывают срабатывание функции, используя подстановочные знаки. Нет доступных фильтров запросов. Если вы хотите еще больше ограничить, какие измененные документы требуют каких-либо действий, вы должны проверить содержимое документа в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...