Я использую firebase-admin
для получения данных и использую Netlify
лямбда-функции для вызова службы. Это в основном все.
Вот мой код:
exports.handler = (event, context, callback) => {
const { id = "toronto" } = event.queryStringParameters;
const cityRefs = dbInstance.collection("cities");
console.info("req.params.id", id);
if (id === "mumbai") {
console.info("in here", id);
let cityRef = cityRefs.doc("id1");
return cityRef
.get()
.then(doc => {
if (!doc.exists) {
console.info("No such document!");
} else {
console.info("Document data:", doc.data());
callback(null, {
statusCode: 200,
body: doc.data()
});
}
})
.catch(err => {
console.info("Error getting document", err);
callback(err);
});
}
}
Я продолжаю получать ошибку ниже. Я не совсем уверен, что делаю неправильно.
Function invocation failed: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type number
🤔 А знаете ли вы, что...
Node.js обеспечивает высокую скорость обработки ввода-вывода (I/O), благодаря асинхронной модели.
Я понял. Причина, по которой это не сработало, заключается в том, что firebase-admin
был в комплекте. Поэтому я использовал https://www.npmjs.com/package/webpack-node-externals
для связывания firebase-admin
. Я добавил это в webpack.functions.js
:
const nodeExternals = require("webpack-node-externals");
module.exports = {
externals: [nodeExternals()]
};
и я запускаю функцию netlify
lambda
с помощью следующей команды:
"start:lambda": "netlify-lambda serve src/functions --config ./webpack.functions.js"