如何在Firestore + Ionic 4上设置和获取键值数组?

时间:2019-03-10 11:33:07

标签: google-cloud-firestore ionic4

我正在尝试设置并获取一些TODO注释,但是问题是我正在与所有用户共享它,并且它不保存在我的Firestore数据库中,不知道为什么,但是它仍然存在。我的模型是:

screenshot

我的添加和获取方法是:

    idea: Idea = {
    name: '',
    note: '',
    date: new Date().getTime()
};

ADD:
this.afs.collection(`users/${this.user.getUID}/ideas`).add(this.idea)
GET_ALL:
this.afs.collection(`users/${this.user.getUID}/ideas`)

我的模态很好吗?我需要为每个想法设置一些ID?非常感谢

已更新

现在我知道如何添加它,现在只需要知道如何将我喜欢的数组的位置传递到详细信息页面以加载详细信息思想即可。

解决方案添加

    this.afs.doc(`users/${this.user.getUID()}`).update({
        ideas: firestore.FieldValue.arrayUnion(this.idea)
    })

1 个答案:

答案 0 :(得分:0)

最终解决

这是我的代码:

# ADD #
this.afs.collection('ideas').add(this.idea)


# LOAD FROM EXISTING IDEA #
ngOnInit() {
    this.ideaId = this.route.snapshot.params['id']
    if (this.ideaId) {
        this.loadIdea();
    }
}

async loadIdea() {

    this.afs.collection<Idea>(`/ideas`)
    .doc<Idea>(this.ideaId)
    .valueChanges()
    .subscribe(data => {
        console.log(data)
        this.idea = data
        loading.dismiss()
    })
}

# REMOVE #
    remove(idea: firebase.firestore.QueryDocumentSnapshot) {
    firebase.firestore()
    .collection('ideas')
    .doc(idea.id).delete()
    })
}

# GET LIST FROM IDEAS #

    getIdeas(){
    firebase.firestore().collection('ideas')
    .where('owner', '==', this.user.getUID())
    .onSnapshot(querySnapshot => {
        console.log('querySnapshot: ' + querySnapshot)
        this.ideas = querySnapshot.docs
    })
}

MY MODAL