如何在firestore中创建一个数组?

Posted

技术标签:

【中文标题】如何在firestore中创建一个数组?【英文标题】:How to create an Array inside firestore? 【发布时间】:2019-01-15 01:13:20 【问题描述】:

Firebase Firestore中创建数组需要哪些代码?

我要存储userDetails

  userName: this.userProfile.name,
  userImage: this.userProfile.image,
  userId: this.userProfile.userId

作为Firestore内的数组

Vue组件:

...
data () 
 return 
     postDetails: 
      createdOn: new Date(),
      content: '',
      userId: null,
      image: null,
      comments: 0,
      likes: 0,
      userDetails: []
    
    userData: [
      userName: this.userProfile.name ,
      userImage: this.userProfile.image,
      userId: this.userProfile.userId 
 
,
methods: 
  createPost () 
    fb.postsCollection.add(
      createdOn: this.postDetails.createdOn,
      content: this.postDetails.content,
      userId: this.currentUser.uid,
      image: this.postDetails.image,
      comments: this.postDetails.comments,
      likes: this.postDetails.likes
      userData: this.userData
    ).then(ref => 
      this.post.content = ''
      this.$router.push('/dashboard')
    ).catch(err => 
      console.log(err)
    )
  

【问题讨论】:

您的文档中已经有两个数组:tags 和 userData。我根本不清楚你遇到了什么问题。 是的,但我在 firebase 控制台中手动添加了两者 我不知道如何用代码做到这一点 您是否尝试过将一个包含一些数据的 javascript 数组实际放入您的代码中? 是的,但在 Firestore 中,它的输出就像普通字符串一样 【参考方案1】:

我看到您正在改编此 Firestore 和 Vue.js 教程中的代码:https://savvyapps.com/blog/definitive-guide-building-web-app-vuejs-firebase。

实际上在本教程中 userProfile 数据来自 vue-store

  computed: 
    ...mapState(['userProfile', 'currentUser', 'posts'])
  ,

您的问题中缺少这部分代码,但这很可能是您的问题的原因:在您的 Vue.js 组件中,您尝试在数据中使用计算属性,但这不可能“因为组件创建时间:数据评估之前计算属性”。

见Use computed property in data in Vuejs和https://forum.vuejs.org/t/computed-properties-in-data/11231

只需按如下方式直接访问计算属性即可:userData 将存储为数组。

methods: 
  createPost () 
    fb.postsCollection.add(
      createdOn: this.postDetails.createdOn,
      content: this.postDetails.content,
      userId: this.currentUser.uid,
      image: this.postDetails.image,
      comments: this.postDetails.comments,
      likes: this.postDetails.likes
      userData: [
         userName: this.userProfile.name ,
         userImage: this.userProfile.image,
         userId: this.userProfile.userId 
      ]
    ).then(ref => 
      this.post.content = ''
      this.$router.push('/dashboard')
    ).catch(err => 
      console.log(err)
    )
  

【讨论】:

谢谢,但为什么这不起作用:´ userData: [ userName: this.userProfile.name, userImage: this.userProfile.image, userId: this.currentUser.userId ]´ 我想要索引 0 中的所有 3 个 根据您在教程中所处的位置,userImagename 的值可能未定义。只尝试userId: this.currentUser.userId 我发现了错误,它不适用于`currentUser´,只能用于userProfile 那么一切都好吗?

以上是关于如何在firestore中创建一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Javascript 在 Cloud Firestore 中创建集合?

如何在 Firestore 中创建和更新数字数组?

如何从云函数动态地在 Cloud Firestore 中创建集合

如何在 Flutter 中创建和读取一组键值对(映射)以在 Firestore 中存储数据

如何在 NoSQL 环境中创建以下数据结构

如何在aspx中创建一个json数组