Ошибка спецификации области облачных функций - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу развернуть облачную функцию, написанную на TypeScript, используя триггер Firestore.Скрипт работает без проблем.Однако мне нужно будет указать регион выполнения, чтобы соответствовать моей RGPD, мне нужно, чтобы функции выполнялись в europe-west1.Я посмотрел документацию по этому вопросу, указано, что в функцию добавлено «.region», однако это приводит к ошибке, которую вы обнаружите в приложении. Полученная ошибка: «ошибка TS2339: свойство 'region' не существует для типа'DocumentBuilder. Я хотел бы отметить, что у меня нет локальных ошибок в VSC, только то, что я подключен к Firebase.

Index.ts

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

const db = admin.firestore();
const fcm = admin.messaging();

export const sendToDevice = functions.firestore
  .document('orders/{orderId}')
  .region('europe-west1')
  .onCreate(async snapshot => {


    const order = snapshot.data();

    const querySnapshot = await db
      .collection('users')
      .doc(order.seller)
      .collection('tokens')
      .get();

    const tokens = querySnapshot.docs.map(snap => snap.id);

    const payload: admin.messaging.MessagingPayload = {
      notification: {
        title: 'New Order!',
        body: `you sold a ${order.product} for ${order.total}`,
        icon: 'your-icon-url',
        click_action: 'FLUTTER_NOTIFICATION_CLICK'
      }
    };

    return fcm.sendToDevice(tokens, payload);
  });

package.json:

{
  "name": "functions",
  "scripts": {
    "lint": "tslint --project tsconfig.json",
    "build": "tsc",
    "serve": "npm run build && firebase serve --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "main": "lib/index.js",
  "dependencies": {
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^3.1.0"
  },
  "devDependencies": {
    "tslint": "^5.12.0",
    "typescript": "^3.2.2"
  },
  "private": true
}

Спасибо за ваш будущий ответ. введите описание изображения здесь

1 Ответ

0 голосов
/ 23 сентября 2019

Согласно документации , спецификация региона идет сразу после объявления functions, например:

export const sendToDevice = functions
  .region('europe-west1')
  .firestore
  .document('orders/{orderId}')
  .onCreate(async snapshot => {

Обратите внимание, что спецификация региона идет сразу после functions.То, что у вас есть, гораздо позже в сборщике, что недопустимо.

Обязательно используйте документацию API , чтобы выяснить, какие методы допустимы на каждом этапе во время сборки функции.

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