Javascript 如何使用Firebase Firestore';s`docChanges`方法?
在使用Javascript 如何使用Firebase Firestore';s`docChanges`方法?,javascript,firebase,google-cloud-firestore,react-native-firebase,Javascript,Firebase,Google Cloud Firestore,React Native Firebase,在使用react native firebase的react native应用程序中的操作中,我创建了一个Firestore快照侦听器: 听众: export const onAgendaChange = (uid, role, dispatch) => { // query based off role let query; if (role == 'Receiver') { query = 'receiver.uid'; } else {
react native firebase
的react native应用程序中的操作中,我创建了一个Firestore快照侦听器:
听众:
export const onAgendaChange = (uid, role, dispatch) => {
// query based off role
let query;
if (role == 'Receiver') {
query = 'receiver.uid';
} else {
query = 'sender.uid';
}
console.log('(actions/agenda) Firestore Read: getAgenda()');
return firebase
.firestore()
.collection('events')
.where(query, '==', uid)
.orderBy('date')
.onSnapshot((querySnapshot) => {
const agenda = []
querySnapshot.forEach((doc) => {
let event = doc.data();
event.id = doc.id;
agenda.push(event);
dispatch({ type: types.LOAD_AGENDA_SUCCESS, payload: agenda });
});
querySnapshot.docChanges().forEach(function (change) {
if (change.type === "added") {
console.log("Add heard: ", change.doc.data());
}
if (change.type === "modified") {
console.log("Modified heard: ", change.doc.data());
}
if (change.type === "removed") {
console.log("Removed heard: ", change.doc.data());
}
});
});
};
我观察到的一个问题是在初始应用程序加载时,当此侦听器执行时,它返回一个错误:
TypeError:querySnapshot.docChanges不是函数。(在
“querySnapshot.docChanges()”、“querySnapshot.docChanges”是一个
数组的实例)
我观察到的下一个问题是,如果重新加载应用程序,则不会生成上述错误,因此如果引用的集合中的文档发生更改,
docChanges()
仍然不会记录任何内容。这直接取自firebase文档。当在“where”或“orderBy”上使用onSnapshot()
时,回调将接收一个querySnapshot对象,该对象确实具有docChanges()
作为方法。有什么想法吗?这个问题是因为在使用react native firebase时,对firebase文档的关注太过密切
虽然库确实镜像了95%的firebase文档,但在本例中,它没有
对于react native firebase,docChanges
是一个属性,而不是一个函数,因此您希望使用:
querySnapshot.docChanges.forEach(function (change) {
if (change.type === "added") {
console.log("Add heard: ", change.doc.data());
}
if (change.type === "modified") {
console.log("Modified heard: ", change.doc.data());
}
if (change.type === "removed") {
console.log("Removed heard: ", change.doc.data());
}
});
您确定该消息引用的是此代码吗?@DougStevenson如果我取消使用
docChanges()
,则无发布的更改应始终是函数而不是数组。如果您有一个可复制的示例提出了其他建议,那么您可以向Firebase支持部门提交该错误报告。这是使用react native firebase,你认为这有关系吗?也许。不过,将问题标记为这样。看起来您仍在将dochangse作为函数调用。