При попытке добавить новый элемент (запрос) для коллекции в моем Firestore, хотя элемент правильно вставлен в коллекцию, я получаю сообщение об ошибке, которое я не могу понять.
обновлено
Необработанная ошибка RangeError: превышен максимальный размер стека вызовов на isLength (/srv/node_modules/lodash/lodash.js:11739:22) на isArrayLike (/srv/node_modules/lodash/lodash.js:11359:31) на ключах (/ srv /node_modules/lodash/lodash.js:13333:14) в /srv/node_modules/lodash/lodash.js:4920:21 в baseForOwn (/srv/node_modules/lodash/lodash.js:2990:24) в Function.mapValues (/srv/node_modules/lodash/lodash.js:13426:7) в кодировке (/srv/node_modules/firebase-functions/lib/providers/https.js:184:18) в / srv / node_modules / lodash / lodash. js: 13427: 38 в /srv/node_modules/lodash/lodash.js:4925:15 в baseForOwn (/srv/node_modules/lodash/lodash.js:2990:24)
HTML
<!-- new request modal -->
<div class="new-request">
<div class="modal">
<h2>New request</h2>
<form>
<input type="text" name="request" placeholder="request...">
<button>Add</button>
<p class="error"></p>
</form>
</div>
</div>
app.js
// add a new request
const requestForm = document.querySelector(".new-request form");
const requestModal = document.querySelector(".new-request");
requestForm.addEventListener("submit", (e) => {
e.preventDefault();
const addRequest = firebase.functions().httpsCallable("addRequest");
addRequest({
text: requestForm.request.value,
})
.then(() => {
requestForm.reset();
requestModal.classList.remove("open");
requestForm.querySelector(".error").textContent = "";
})
.catch((error) => {
requestForm.querySelector(".error").textContent = error.message;
});
});
index.js (функции firebase) обновлен *
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
// auth trigger (user sign up)
exports.newUserSignup = functions.auth.user().onCreate((user) => {
// for background triggers you must return a value/promise
return admin.firestore().collection("users").doc(user.uid).set({
email: user.email,
upvotedOn: [],
});
});
// auth trigger (user deleted)
exports.userDeleted = functions.auth.user().onDelete((user) => {
// for background triggers you must return a value/promise
const doc = admin.firestore().collection("users").doc(user.uid);
return doc.delete();
});
// http callable function (adding a request)
exports.addRequest = functions.https.onCall((data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError(
"unauthenticated",
"only authenticated users can add requests"
);
}
if (data.text.length > 30) {
throw new functions.https.HttpsError(
"invalid-argument",
"request must be no more than 30 characters long"
);
}
return admin.firestore().collection("requests").add({
text: data.text,
upvotes: 0,
});
});