如何将当前用户ID与Firebase数据库数据的值匹配?

时间:2018-12-03 05:31:34

标签: javascript firebase vue.js google-cloud-firestore

我正在将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存储在“ user”中。 我想仅在“当前用户别名= 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);
     })

无论我当前的用户信息如何,当我在Cartitems中提取所有Cartitem时, 它正在工作。代码如下。

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

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

1 个答案:

答案 0 :(得分:0)

您必须先检查db.collection('cartitems').where('user', '==', this.user.alias).get()。是对还是错?然后我认为它不像where('user', '==', this.user.alias)那样直接起作用,您应该获得第一把钥匙,并且您可以比较它,这是我希望您理解的firebase方式。