Javascript 如何从react native firestore onSnapshot获取精确数据,而不是使用数组获取数据?
我在useffect中调用onSnapshot,并在特定文档更新时获取数据。 我可以获取数据,但数据是作为带有索引的数组返回的。 比如说,Javascript 如何从react native firestore onSnapshot获取精确数据,而不是使用数组获取数据?,javascript,firebase,react-native,google-cloud-firestore,Javascript,Firebase,React Native,Google Cloud Firestore,我在useffect中调用onSnapshot,并在特定文档更新时获取数据。 我可以获取数据,但数据是作为带有索引的数组返回的。 比如说, {"createdAt": [7, 1595865535572], "lastMessage": [16, {"assetURL": [Array], "conversationId": [Array], "createdAt": [Array], &quo
{"createdAt": [7, 1595865535572],
"lastMessage": [16, {"assetURL": [Array], "conversationId": [Array], "createdAt": [Array], "text": [Array]}],
"observerUIDs": [10, [[Array], [Array]]],
"observers": [10, [[Array], [Array]]]
在api调用中,我必须得到
{createdAt: 1595865535572,
lastMessage: {"assetURL": "URL", "conversationId": "ID", "createdAt": 1242141204, "text": "HI}, observerUIDS: [{...}, {...}], ...}
在useEffect调用中,我作为
const subscriber = firestore()
.collection('Conversations')
.where('observerUIDs', 'array-contains', 'uid')
.onSnapshot(async documentSnapshot => {
documentSnapshot.docChanges().forEach((change) => {
var event = change._nativeData.doc.data;
console.log(event);
})
除了带索引的数组之外,有没有其他方法可以获得精确的数据
谢谢使用
documentSnapshot.docs[0]。\u data
而不是看起来您正在尝试使用未通过API公开的私有数据,这些数据同时包含\u nativeData
和\u data
。这是一个坏主意,因为这些实现细节可能会随着时间的推移而改变,并破坏您的代码。您应该使用公共api。我从上述方法获取的数据与我从api获取的数据完全相同。我试图减少api调用的可能性,因为如果我在OnSnapshot中调用api,它会加倍读取。我想你没有领会我的观点——使用以下划线开头的私有未记录属性是个坏主意。您现在使用的对象上有一些公共属性和方法,可以让您访问文档中明确说明的所有这些数据。正如我对您的问题所作的评论,更清楚地查看您的文档数据将有助于您了解最佳操作。请编辑问题以更详细地显示您试图阅读的文档。那个调试日志不是很有用。文档的屏幕截图可能会有所帮助。