在反应应用程序中获取快照侦听器错误
getting snapshot listener error in react application
我是 React 新手,我正在使用 React js 和 firebase 构建一个 todo 应用程序。 Firebase 已成功连接到 React 应用程序,但我收到此错误 。它还在说 FirebaseError:缺少或权限不足。能否请您解释一下问题是什么以及如何解决。
代码如下
import React, { useState, useEffect } from 'react';
import { Button } from '@material-ui/core';
import db from './firebase';
import Todo from './Todo';
import './App.css';
function App() {
const [todos, setTodos] = useState([]);
const [input, setInput] = useState('');
useEffect(() => {
db.collection('todos').onSnapshot(snapshot => {
setTodos(snapshot.docs.map(doc => doc.data().todo));
})
}, []);
const addTodo = (event) => {
event.preventDefault();
setTodos([...todos, input]);
setInput('');
}
return (
<div className="App">
<form>
<input placeholder="Your ToDo's" onChange={event => { setInput(event.target.value) }} value={input} />
<Button type="submit" disabled={!input} variant="contained" onClick={addTodo} color="primary">
Add todo
</Button>
</form>
<ul>
{todos.map(todo => (
<Todo text={todo} />
))}
</ul>
</div>
);
}
export default App;
您需要更新您的 firestore.rules
以在 collection/document 上允许 read
。
看看这个:https://firebase.google.com/docs/firestore/security/get-started
更新文件后,您可以使用以下方法部署新规则:
firebase deploy --only firestore:rules --project YOUR_PROJECT_ID
我是 React 新手,我正在使用 React js 和 firebase 构建一个 todo 应用程序。 Firebase 已成功连接到 React 应用程序,但我收到此错误
代码如下
import React, { useState, useEffect } from 'react';
import { Button } from '@material-ui/core';
import db from './firebase';
import Todo from './Todo';
import './App.css';
function App() {
const [todos, setTodos] = useState([]);
const [input, setInput] = useState('');
useEffect(() => {
db.collection('todos').onSnapshot(snapshot => {
setTodos(snapshot.docs.map(doc => doc.data().todo));
})
}, []);
const addTodo = (event) => {
event.preventDefault();
setTodos([...todos, input]);
setInput('');
}
return (
<div className="App">
<form>
<input placeholder="Your ToDo's" onChange={event => { setInput(event.target.value) }} value={input} />
<Button type="submit" disabled={!input} variant="contained" onClick={addTodo} color="primary">
Add todo
</Button>
</form>
<ul>
{todos.map(todo => (
<Todo text={todo} />
))}
</ul>
</div>
);
}
export default App;
您需要更新您的 firestore.rules
以在 collection/document 上允许 read
。
看看这个:https://firebase.google.com/docs/firestore/security/get-started
更新文件后,您可以使用以下方法部署新规则:
firebase deploy --only firestore:rules --project YOUR_PROJECT_ID