首页 > 解决方案 > 如何将当前用户 ID 与 firebase 数据库数据的值相匹配?

问题描述

我将 vue.js 与 firebase 一起用于购物网站。我可以像下面这样获取当前用户 ID。

 data () {
    return {
      cartitems: [],
      user: null,
    }
  },
  created(){

    //get current user
    db.collection('users').where('user_id','==',firebase.auth().currentUser.uid).get()
    .then(snapshot=>{
        snapshot.forEach(doc => {
            this.user =doc.data(),
            this.user.id = doc.id
        })
        console.log('get current user id')
        console.log(this.user.id)
        console.log(this.user.alias)    
    })

它正在工作,我可以获得当前的用户 ID 和别名。

在“cartitems”中,我将 user.alias 存储在“用户”中。我只想在“当前用户别名 = cartiems.user”中显示 Cartitem。但下面的代码不起作用。它成功获取了当前用户别名,我在控制台中签入。

    db.collection('cartitems').where('user', '==', this.user.alias).get()
       .then(snapshot => {
        snapshot.forEach(doc => {
            this.cartitem = doc.data()
            this.cartitem.id = doc.id
            this.cartitems.push(cartitem) 

        })
       }).catch(function(error) {
         console.log("Error getting documents: ", error);
     })

无论当前用户信息如何,当我在 caritems 中获取所有 caritem 时,它都在工作。代码如下。

    db.collection('cartitems').get()
    .then(snapshot =>{
      snapshot.forEach(doc =>{
        let cartitem = doc.data()
        cartitem.id =  doc.id
        this.cartitems.push(cartitem) 
      })
    })

我想显示仅与当前用户匹配的 caritem。请帮助:) 谢谢。

标签: javascriptfirebasevue.jsgoogle-cloud-firestore

解决方案


你必须先检查db.collection('cartitems').where('user', '==', this.user.alias).get()。是对还是错?然后我认为它不像where('user', '==', this.user.alias)你应该得到第一个密钥那样直接工作,你可以在firebase中比较它,我希望你理解。


推荐阅读