Удаление карт в документе firestore (облачные функции / Node.js )

#javascript #node.js #firebase #google-cloud-firestore

# #javascript #node.js #firebase #google-облако-firestore

Вопрос:

Я пробовал много разных способов, но ничего не работает. Все, что мне нужно, это удалить карту (внутри другой вызываемой карты question_template ) в firestore документе, где имя карты известно только во время выполнения (задается в качестве параметра languageName облачной функции).

 const modulesDocument = admin.firestore().collection('quiz').doc('modules');
 

при использовании строк шаблона я получаю эту ошибку (кстати, я использую JS, а не TS):
Ожидается присвоение свойства.ts(1136)

 modulesDocument.update({
    `question_template.${languageName}`: admin.firestore.FieldValue.delete()   
});
 

затем я попробовал этот метод, который также не сработал:

 const language = `question_template.${languageName}`;

modulesDocument.update({
    //the previously defined 'const language' doesn't get referenced here, why?
    language: admin.firestore.FieldValue.delete()   
});
 

Ответ №1:

Если вы хотите использовать содержимое строкового выражения в качестве ключа в определении объекта, заключите его в квадратные скобки:

 modulesDocument.update({
    [language]: admin.firestore.FieldValue.delete()   
});
 

Ответ №2:

использовать

 modulesDocument.update({
    [`question_template.${languageName}`]: admin.firestore.FieldValue.delete()   
});
 

или

 const language = `question_template.${languageName}`;

modulesDocument.update({
    [language]: admin.firestore.FieldValue.delete()   
});