Как обновить один элемент, не затрагивая другие аргументы? - PullRequest
1 голос
/ 31 января 2020

Я хочу обновить только одну вещь в базе данных, как это сделать?

Предположим, я хочу обновить imgUrl, как обновить только это, не затрагивая другие аргументы?

	updateDataProjects = (id, companyName, imgUrl, userOrderCollection) => {
  firebase.firestore()
  .collection("projects")
  .doc(id)
  .set({
    companyName: companyName,
    imgUrl: imgUrl,
    userOrderCollection: userOrderCollection
  })
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

Я должен получить доступ к функции обновления следующим образом:

updateDataProjects(id, companyName, imgUrl, userOrderCollection);

А как подать заявку таким образом?

updateDataProjects(...argements, imgUrl);

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Добавьте {merge: true} в качестве второго аргумента к set, и он будет обновлять только предоставленные поля.

firebase.firestore()
  .collection("projects")
  .doc(id)
  .set({
    imgUrl: imgUrl,
  }, {merge: true})
}

Подробнее об этом в документации здесь https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

Если вы хотите обновить только один элемент, просто передайте один элемент. Так что updateDataProjects(,, imgUrl). Но вы должны знать, чтобы передать его в качестве третьего аргумента, поэтому после двух запятых.

Лучшим решением было бы преобразовать параметры в один объект, чтобы вам не приходилось беспокоиться о порядке аргументов. Таким образом, вызов становится updateDataProjects({id, companyName, imgUrl, userOrderCollection}). Тогда вы можете разрушить ту же самую опору в своей функции, как и const updateDataProjects = ({id, companyName, imgUrl, userOrderCollection}) => {...}. Если вам нужно только одно поле, передайте только одно в updateDataProjects({imgUrl}), и порядок больше не имеет значения.

0 голосов
/ 31 января 2020

Вы можете передать аргументы функции updateDataProjects как объект. updateDataProjects({ id, companyName, imgUrl, userOrderCollection }); И использовать как updateDataProjects({ imgUrl });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...