首页 > 解决方案 > 如何将数据推送到 Firestore 中的嵌套数组中?

问题描述

我怎样才能做到这一点?我为用户集合中的每个用户都有一个数据结构,我为存储在集合中的用户对象创建了自己的模式。

我想在这个对象中初始化一个 favoriteMovies 集合,这样我就可以在里面添加电影对象。

这是我尝试做的一个例子:


      async function signUp(email, password){
        const {user} = await auth.createUserWithEmailAndPassword(email, password)
        
        // initialise the schema for the data
        const userInitialised = await db.collection('users').doc(user.uid).set(userSchemaObject(user.uid))
        return userInitialised;
    
        
      }

那么到目前为止的架构:


    export default function userSchemaObject(uuid){
      return {
        uuid,
        favmovies:[]
      }
    }

标签: javascriptfirebasegoogle-cloud-firestore

解决方案


我在问如何将数据推送到嵌套数组

根据您的问题和评论,您的favmovies字段应该是 Array 类型,并且似乎不是“嵌套”的。因此,您应该简单地使用arrayUnion()以将数据推送到此数组。

下面的代码演示了如何创建一个带有空数组字段的文档,然后演示如何推送一个值。

const db = firebase.firestore();

const newDocRef = db.collection('test').doc();

newDocRef
    .set({
      uuid: 'uuid_value',
      favmovies: [],
    })
    .then(() => {
      newDocRef.update({
        favmovies: firebase.firestore.FieldValue.arrayUnion('movie1'),
      });
    }); 

请注意,您可以将多个元素传递给该arrayUnion()方法。

newDocRef.update({
    favmovies: firebase.firestore.FieldValue.arrayUnion(
      'movie1',
      'movie2'
    ),
});

推荐阅读