Добавить функцию :
exports.newCampaign = functions.https.onCall((data, context) => {
// get adventurer information
const campaignName = data.campaignName;
const timestamp = data.timestamp;
const uid = context.auth.token.uid || null;
// create a new document for the campaign
var query = admin.firestore().collection(`Adventurers/${uid}/campaigns`).add({
locations: [],
name: campaignName
})
.then((docRef) => {
admin.firestore().collection('Adventurers').doc(uid).update({
[`campaignList.${docRef.id}`]: {
id: docRef.id,
name: campaignName,
timestamp: timestamp
}
});
return {
id: docRef.id
};
})
.catch((error) => {
return {
error: "Error adding document: " + error
};
});
return query;
});
Когда я вызываю это, коллекция Adventurers.uid.campaigns получает новый документ с campaignId, а Adventurers.uid.campaignList получает атрибут называется ИД кампании. Работает, как ожидалось
Удалить функцию :
exports.deleteCampaign = functions.https.onCall((data, context) => {
// get adventurer information
const campaignId = data.campaignId;
const uid = context.auth.token.uid || null;
// delete the document for the campaign
var query = admin.firestore().collection(`Adventurers/${uid}/campaigns`).doc(campaignId).delete()
.then((docRef) => {
// delete campaign from the campaign list
admin.firestore().collection('Adventurers').doc(uid).update({
[`campaignList.${campaignId}`]: Firebase.firestore.FieldValue.delete()
});
return {};
})
.catch((error) => {
return {
error: "Error removing document: " + error
};
});
return query;
});
Когда я вызываю это, документ в коллекции кампаний удаляется, но поле в CampaignList не удаляется. Не работает должным образом . Поскольку документ был успешно удален, я знаю, что функция получает правильный идентификатор кампании. Я пытаюсь удалить точно так же, как я добавил, так почему это не работает?