我尝试使用一个函数两次,但只是使用不同的参数,以便我的代码库保持干燥。关键是我想要两个不同的 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/