javascript - Firebase 函数 - 使用不同参数的函数两次

标签 javascript firebase google-cloud-firestore google-cloud-functions

我尝试使用一个函数两次,但只是使用不同的参数,以便我的代码库保持干燥。关键是我想要两个不同的 URL 来执行完全相同的操作,但只是使用不同的 Firestore 集合。我始终可以为此使用 POST 有效负载,但我希望将一个 URL 公开给公众,而另一个 URL 仅供内部使用。

它基本上应该是这样的:

index.js

const createRestaurant = require("./createRestaurant");

module.exports = {
  addPendingRestaurant: functions
    .region("europe-west1")
    .https.onRequest(
      createRestaurant(request, response, { collection: "restaurants_pending" })
    ),

  createRestaurant: functions
    .region("europe-west1")
    .https.onRequest(
      createRestaurant(request, response, { collection: "restaurants_v2" })
    )
}

createRestaurant.js 看起来像这样:

const createRestaurant = (request, response, options) => {
  cors(request, response, async () => {
    const placeId = request.body.place_id;

    console.log(`Place with id ${placeId} is about to be created`);

    try {
      const autoFill = await axios.get(url);
      const autoFillData = autoFill.data.result;

      //get data from maps
      const payload = {
        ...
      };

      if (await restaurantExists(options.collection)) {
        console.log("Document exists. Aborting.");
        return response.status(403).send({ message: "Place already exists." });
      }

      await createRestaurant(options.collection, payload);
      console.log(`Place with id ${placeId} created successfully`);
      return response
        .status(200)
        .send({ message: `Place with id ${placeId} created successfully` });
    } catch (error) {
      console.error(error);
      return response.status(400).send({
        error: "Unable to handle the request. The placeId might not be valid."
      });
    }
  });
};

当我尝试上传函数时,我从 firebase CLI 收到此错误:

Parsing error: Identifier 'createRestaurant' has already been declared

我需要做什么才能使这项工作成功?我觉得这可能只是 JavaScript 的问题,而不是 Firebase 特有的,但我不确定。

最佳答案

您错误地声明了导出的函数。应该是这样的:

  module.exports = {
    addPendingRestaurant: functions
      .region("europe-west1")
      .https.onRequest((request, response) => {
        createRestaurant(request, response, { collection: "restaurants_pending" })
      }),

    createRestaurant: functions
      .region("europe-west1")
      .https.onRequest((request, response) => {
        createRestaurant(request, response, { collection: "restaurants_v2" })
      })
  }

关于javascript - Firebase 函数 - 使用不同参数的函数两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238708/

相关文章:

javascript - 同位素排序回调函数

javascript - 指令使 $scope.$watch 触发两次?

java - 如何为一个 child 设置多个对象?

javascript - 尝试调用 Firebase 函数时的 Access-Control-Allow-Origin

firebase - 将 Geofirex 与 React Native 和 rnfirebase 结合使用

javascript - ESLint 如何修复解析错误 : 'import' and 'export' may only appear at the top level

firebase - Firestore 按字段分组

firebase - Firestore Cloud Functions,Multiple Functions 和 One Big Functions 哪个更好?

javascript - 带有 Firebase 的 Algolia 的 TypeError [ERR_HTTP_INVALID_HEADER_VALUE]

javascript - 有没有办法在第三方 URL 上运行 gremlin.js 猴子测试?