Добавьте поле в существующую базу данных документов

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

Вопрос:

Я хочу добавить новое поле в уже существующий документ, но когда я использую «объединить: верно», оно стирает все предыдущие данные.

Вот создание документа:

 await db.collection('projects').doc(JSON.stringify(project.orderId)).set(
    {
        'orderId': project.orderId,
        'name': project.name,
    }, { merge: true }
)
 

Результат :

 ID : {
    orderID: ID,
    name: "project"
}
 

И вот когда я хочу добавить новое поле:

 await db.collection('projects').doc(project.orderId).set(
    {
        'responsable': project.responsable,
    }, { merge: true }
)
 
 ID : {
    responsable: "resp"
}
 

Комментарии:

1. Этого не должно произойти. Можете ли вы войти project в систему и поделиться тем, как выглядит объект ? Почему вы используете stringify() в первом фрагменте кода

2. Не потому ли, что в первом случае вы используете JSON.stringify(project.orderId) идентификатор документа, а во втором случае используете только project.orderId его ? Просто чтобы проверить… так как мы не знаем, что это project.orderId такое .

3. Я удалил JSON.stringify его, так как это было бесполезно. Он по-прежнему стирает данные, но не каждый раз

4. Что вы подразумеваете под «стиранием данных, но не каждый раз»?

5. Пожалуйста, напишите ответ с вашими выводами, чтобы любой, кто может найти этот вопрос в будущем, мог увидеть решение без необходимости читать комментарии.