从 Firestore 数据库中获取数据以及查询

Gets data from the Firestore Database along with the query

我只需要从 Firestore 数据库下载数据就可以了。它使我崩溃:

Cannot read property 'onSnapshot' of undefined

如何从 Firestore 获取数据并创建查询?

我的代码:

const messages = this.firestore.collection('chat', ref => {
    ref.where('receiver_id', '==', employee.user.id);
    }).valueChanges().subscribe((message) => {
        console.log(message);
    });

我的 Firestore 数据库:

消息将不会分配给您代码中的 const messages。 你应该把你的逻辑放在订阅中。

let messages;
this.firestore.collection('chat', ref => {
    return ref.where('receiver_id', '==', employee.user.id);
})
.valueChanges()
.subscribe((message) => {
    console.log(message);
    messages = message;
});

此外,您实际上需要从 message 响应中提取 data()。类似于 message.docs.map(doc => doc.data());.

您没有从回调中返回任何内容,这意味着 AngularFire 最终尝试在 undefined 上调用 onSnapshot

应该是:

const messages = this.firestore.collection('chat', ref => {
    return ref.where('receiver_id', '==', employee.user.id);
}).valueChanges().subscribe((message) => {
    console.log(message);
});

或者更常见的写法是:

const messages = this.firestore.collection('chat', ref => ref.where('receiver_id', '==', employee.user.id))
.valueChanges().subscribe((message) => {
    console.log(message);
});

getData() {
  var array = []
  return this.firestore.collection('chat', ref =>
      ref.where('receiver_id', '==', this.employee.user.id)).snapshotChanges()
    .subscribe(res => {
      array = res.map(msg => {
        return {
          id: msg.payload.doc.id,
          ...msg.payload.doc.data() as {}
        }
      })
    })
}