Firebase React上的onSnapshot

时间:2020-05-28 00:05:32

标签: reactjs firebase google-cloud-firestore

我想使用onSnapshot函数获得实时数据。问题是我想把它放在我拥有的ID的特定文档上。我尝试了这个:

const getMembers = () => {
  db.collection('wydarzenie').doc(props.event_id).onSnapshot(snapshot => {
    console.log(snapshot.docData())
  })
}

但是我得到一个错误,snapshot.docData不是一个函数

我也尝试过这个:

const getMembers = () => {
    db.collection('wydarzenie').where('id' , '==', props.event_id).onSnapshot(snapshot => {
        console.log(snapshot.docChanges())
    })}

但是我的文档中没有他的身份证...

我想在uczestnicy集合中的数组wydarzenie上有实时侦听器,但是我不知道该怎么做。 我的数据库如下所示: photo

1 个答案:

答案 0 :(得分:1)

当您收听单个文档时,回调的参数为web.config。要获取其数据,请在其上调用<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <httpRuntime enableVersionHeader="false" /> </system.web> <system.webServer> <httpProtocol> <customHeaders> <add name="Strict-Transport-Security" value="max-age=31536000"/> <add name="X-Content-Type-Options" value="nosniff" /> <add name="X-Frame-Options" value="DENY" /> <add name="X-XSS-Protection" value="1; mode=block" /> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> <webSocket enabled="false" /> <handlers> <!-- Indicates that the main.js file is a node.js site to be handled by the iisnode module --> <add name="iisnode" path="main.js" verb="*" modules="iisnode"/> </handlers> <rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> <!-- Do not interfere with requests for node-inspector debugging --> <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> <match url="^main.js\/debug[\/]?" /> </rule> <!-- All other URLs are mapped to the node.js site entry point --> <rule name="DynamicContent"> <match url="^(?!.*login).*$"></match> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> </conditions> <action type="Rewrite" url="main.js"/> </rule> </rules> <outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000" /> </rule> </outboundRules> </rewrite> <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it --> <security> <requestFiltering> <hiddenSegments> <remove segment="bin"/> </hiddenSegments> </requestFiltering> </security> <!-- Make sure error responses are left untouched --> <httpErrors existingResponse="PassThrough" /> <!-- Restart the server if any of these files change --> <iisnode watchedFiles="web.config;*.js;browser/*.*" /> </system.webServer> </configuration>

所以:

DocumentSnapshot

另请参阅listening for realtime updates to a document上的Firebase文档。