# #node.js #firebase #express #google-cloud-firestore #google-cloud-functions
Вопрос:
У меня есть веб-крючок, который отправляет JSON на URL-адрес триггера моей облачной функции.
Я хочу, чтобы облачная функция проанализировала JSON и записала его в мой облачный магазин Firestore.
Я протестировал веб-крючок на веб-крючке.сайт amp; requestbin.com : они оба отлично получают запрос на отправку.
Кроме того, это не аутентифицированный запрос, и я развернул функцию через облачную платформу Google — Консоль облачных функций. Я не развертывал это через интерфейс командной строки или через настройку приложения с помощью firebase.
Для этой функции действительно требуется HTTPS.
Я смог заставить свою функцию записывать в Firestore, но она не записывала поля на карте — я включил скриншоты внизу, чтобы показать, как выглядит мой Firestore в консоли Firebase / Google Cloud Platform.
Какой синтаксис мне нужно предоставить, чтобы убедиться, что моя облачная функция принимает JSON и записывает в Firestore, соблюдая тип данных карты?
Нужно ли мне объявлять people_Email = карта? и если я это сделаю, как это будет достигнуто?
index.js
const admin = require('firebase-admin')
admin.initializeApp();
exports.wooCommerceWebhook = async (req, res) => {
const payload = req.body;
var billing = ""; // Do I even need to declare every nest of the complex JSON?
var people_EmailHome = "";
var people_FirstName = "";
var people_LastName = "";
// Write to Firestore - People Collection
await admin.firestore().collection("people").doc().set({
people_EmailHome: payload.billing.email,
people_FirstName: payload.billing.first_name,
people_LastName: payload.billing.last_name,
});
return res.status(200).end();
};
пакет.json
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"firebase-admin": "^9.4.2"
}
}
Мой веб-крючок, который отправляет сообщение JSON на URL-адрес моей облачной функции:
{
"billing": {
"email": "test@test.com",
"first_name": "First",
"last_name": "Last"
}
}
Комментарии:
1. Можете ли вы поделиться скриншотом полезной нагрузки, а также ожидаемой структуры в Firestore ?
2. моя полезная нагрузка должна быть JSON, я опубликовал.
{"billing": { "email": "test@test.com", "first_name": "First", "last_name": "Last" } }
и ожидаемая структура-коллекция(«люди»).doc() Кроме того, вы должны увидеть скриншоты внизу, где я показываю, что people_Email-это карта со строкой people_EmailHome
Ответ №1:
Какой синтаксис мне нужно предоставить, чтобы убедиться, что моя облачная функция принимает JSON и записывает в Firestore, соблюдая тип данных карты?
Следующее сделает свое дело:
const admin = require('firebase-admin')
admin.initializeApp();
exports.wooCommerceWebhook = async (req, res) => {
const payload = req.body;
await admin.firestore().collection("people").doc().set({
people_Email: { people_EmailHome: payload.billing.email },
people_Names: { people_FirstName: payload.billing.first_name, people_LastName: payload.billing.last_name }
});
return res.status(200).end();
};
Комментарии:
1. Нужно ли мне объявлять переменные, такие как:
var people_EmailHome = "";
чтобы сообщить Firestore, что это строка? Я получал неопределенные ошибки полезной нагрузки до того, как начал объявлять типы данных.2. Нет, вам это не нужно, он рассматривается как ключ пары ключ/значение.