it-source

Firestore 배열 필드에 값 추가

criticalcode 2023. 6. 30. 22:25
반응형

Firestore 배열 필드에 값 추가

Firebase 클라우드 기능을 사용하여 배열 필드의 사용자 문서에 대화방 ID를 추가하려고 합니다.배열 필드 유형에 쓰는 방법을 알 수가 없습니다.여기에 클라우드 기능이 있습니다.

  exports.updateMessages = functions.firestore.document('messages/{messageId}/conversation/{msgkey}').onCreate( (event) => {
    console.log('function started');
    const messagePayload = event.data.data();
    const userA = messagePayload.userA;
    const userB = messagePayload.userB;   

        return admin.firestore().doc(`users/${userA}/chats`).add({ event.params.messageId }).then( () => {

        });

  });

여기 내 데이터베이스의 모양이 있습니다.

enter image description here

어떤 팁이든 대단히 감사합니다, 저는 소방서에 처음입니다.

문서에서 배열에서 요소를 추가하거나 제거하는 새 작업을 추가했습니다.여기서 더 읽기: https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array

예:

var admin = require('firebase-admin');
// ...
var washingtonRef = db.collection('cities').doc('DC');

// Atomically add a new region to the "regions" array field.
var arrUnion = washingtonRef.update({
  regions: admin.firestore.FieldValue.arrayUnion('greater_virginia')
});
// Atomically remove a region from the "regions" array field.
var arrRm = washingtonRef.update({
  regions: admin.firestore.FieldValue.arrayRemove('east_coast')
});

현재 Firestore에서는 배열의 개별 필드를 업데이트할 수 없습니다.그러나 배열의 전체 내용을 다음과 같이 바꿀 수 있습니다.

admin.firestore().doc(`users/${userA}/chats`).update('array', [...]);

이렇게 하면 다른 클라이언트의 일부 쓰기가 재정의될 수 있습니다.업데이트를 수행하기 전에 트랜잭션을 사용하여 문서를 잠글 수 있습니다.

admin.firestore().runTransaction(transaction => {
  return transaction.get(docRef).then(snapshot => {
    const largerArray = snapshot.get('array');
    largerArray.push('newfield');
    transaction.update(docRef, 'array', largerArray);
  });
});

2021년이며 파이어베이스 파이어스토어를 여러 번 업데이트한 후 다른 데이터를 제거하지 않고 어레이에 데이터를 추가하는 새로운 방법은 다음과 같습니다.

      var washingtonRef = db.collection("cities").doc("DC");

      // Atomically add a new region to the "regions" array field.
       washingtonRef.update({
     regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia")
     });

      // Atomically remove a region from the "regions" array field.
    washingtonRef.update({
        regions: firebase.firestore.FieldValue.arrayRemove("east_coast")
      });

언급URL : https://stackoverflow.com/questions/48231957/firestore-add-value-to-array-field

반응형