使用 React 和 Axios 更新 Firebase 中的数据

Posted

技术标签:

【中文标题】使用 React 和 Axios 更新 Firebase 中的数据【英文标题】:Updating Data in Firebase using React and Axios 【发布时间】:2019-06-01 09:34:03 【问题描述】:

我正在尝试更新 firebase 数据库中的一些数据。但是我无法让 updateAPI 函数正常工作。我相信是和axios.put有关,url可能没有正确遍历数据?

我尝试更改网址,但最终出现 OPTIONS 和 CORS 错误,这意味着网址不正确。

        // API Function calls
        async getAPI()
                const response = await axios.get('https://fir-test-euifhefibewif.firebaseio.com/todos.json')
                console.log(response)
                console.log(response.data)
            
            async postAPI()
                const response = await axios.post('https://fir-test-euifhefibewif.firebaseio.com/todos.json', name: notesAll)
                console.log(response)
                console.log(response.data)
            
            async deleteAPI()
                const response = await axios.delete('https://fir-test-euifhefibewif.firebaseio.com/todos.json')
                console.log(response)
                console.log(response.data)
            
            async updateAPI()
                const response = await axios.put('https://fir-test-euifhefibewif.firebaseio.com/todos/-LVYEw6KTltVoEkPeuxY/name/0', note)
                console.log(response)
                console.log(response.data)
            

        // Notes notesAll
        const notesAll = [
        
                "name": "user1",
                "race": "human"
            ,
            
                "name": "user2",
                "race": "human"
            ,
            
                "name": "user3",
                "race": "human"
            ,
            
                "name": "user4",
                "race": "human"
            ,
            
                "name": "user5",
                "race": "human"
            
        ]

        // Test data
            const note = [
            
                name: 'Test',
                race: 'Test'
            
        ]

        // Firebase database example
        
        "todos": 
            "-LVYIfktKR6fa6ish1aw": 
            "name": [
                
                "name": "user1",
                "race": "human"
                ,
                
                "name": "user2",
                "race": "human"
                ,
                
                "name": "user3",
                "race": "human"
                ,
                
                "name": "user4",
                "race": "human"
                ,
                
                "name": "user5",
                "race": "human"
                
            ]
            
        
        

所有代码需要做的就是更新对象数组中的一些数据。

【问题讨论】:

你遇到了什么错误? @Colin OPTIONS 405(不允许的方法)从源 'localhost:3000' 访问 XMLHttpRequest 在 'fir-test-euifhefibewif.firebaseio.com/todos/name/0/name' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。未捕获(承诺)错误:XMLHttpRequest.handleError 处的 createError (createError.js:17) 处的网络错误 【参考方案1】:

试试:

    async updateAPI()
        const response = await axios.put('https://fir-test-euifhefibewif.firebaseio.com/todos/-LVYEw6KTltVoEkPeuxY/name/0', note)
        console.log(response)
        console.log(response.data)
    

    // Test data
    const note = 
        name: 'Test',
        race: 'Test'
    

要使用 REST 写入 Firebase 数据库,URL 必须以 .json 结尾。所以:

url = yourUrl + ".json";

在此处查找更多信息:https://firebase.google.com/docs/database/rest/save-data

【讨论】:

谢谢,我试了代码,还是不行。

以上是关于使用 React 和 Axios 更新 Firebase 中的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 React、Redux 和 Axios 处理异步请求?

在 React 项目中使用 Axios 的目的 [关闭]

React + axios 如何实现长轮询

在 axios 请求后自行更新状态?

如何在 React 中使用窗口的 beforeunload 事件执行 axios 代码

axios 和 android 模拟器的网络错误