Я использую Firestore в качестве базы данных для моего веб-приложения React.Перед запуском тестов браузера с Cypress я запускаю скрипт NodeJS, который импортирует данные, необходимые для этих тестов.Мой план Firebase настроен на Blaze (платите, как хотите), поскольку бесплатная версия не поддерживает импорт.
У меня есть 3 коллекции, в которые я импортирую данные - организации, профили, продукты. Используя тот же код, импорт работает для организаций и профилей, но не для продуктов :
const admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: `https://<myFirebaseProjectId>.firebaseio.com`
});
const testOrg = {
name: "testOrgName",
createdAt: Date()
};
//add organization
admin.firestore().collection("organizations").add(testOrg)
.then(createdTestOrg => {
//works fine with organizations
console.log("Successfully created new org:", createdTestOrg.id);
const testProfile = {
name: "testProfile",
organization: admin.firestore().doc(`organizations/${createdTestOrg.id}`)
createdAt: Date()
};
//add profiles
admin.firestore().collection("profiles").add(testprofile)
.then(createdTestProfile => {
//works fine with profile
console.log("Successfully created new profile:", createdTestProfile .id);
let productItem = {
isDeleted: false,
createdBy: admin.firestore().doc('profiles/' + selectedUser[0].uid),
createdAt: Date()
};
productItem.name = makeRandomName(10)
//add product
admin.firestore().collection("products").add(productItem)
.then((newProd)=>{
// I never get here
console.log("Successfully created test product");
})
.catch(error => {
// I never get here either
// eslint-disable-next-line no-console
console.log("Error creating test product:", error);
process.exit(1);
});
});
});
Вот суть с полным кодом: https://gist.github.com/DurkoMatko/1097d1c18a00d5fd4195253205c53ff2
У меня естьтакже попытался заменить collection("products").add(product)
на collection("products").doc(product.id).set(product)
, что должно создать новый документ, если он еще не существует.Все еще безуспешно.Кроме того, точки останова ни в секции .then
, ни. catch
не срабатывают.Эти строки просто молча происходят, но новый документ о продукте не создается.
У кого-нибудь есть идеи?