-
Notifications
You must be signed in to change notification settings - Fork 185
Open
Description
Here's my basic setup:
import {
Admin,
Resource,
ListGuesser,
EditGuesser,
ShowGuesser,
SimpleShowLayout,
Show,
Create, SimpleForm,
List,
Edit,
Datagrid,
TextField,
} from "react-admin";
// import { dataProvider } from "./dataProvider";
// import { authProvider } from "./authProvider";
import { PostList, PostShow, PostCreate, PostEdit } from "./posts";
import UserIcon from '@material-ui/icons/People';
import CommentIcon from '@material-ui/icons/Comment';
import CustomLoginPage from "./LoginPage";
import {
FirebaseAuthProvider,
FirebaseDataProvider,
} from 'react-admin-firebase';
import "firebase/compat/firestore";
import "firebase/compat/storage";
import firebase from "firebase/compat/app";
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_SENDER_ID,
appId: process.env.REACT_APP_FIREBASE_APP_ID
}
let firebaseApp;
if (!firebase.apps.length) {
firebaseApp = firebase.initializeApp(firebaseConfig);
} else {
firebaseApp = firebase.app(); // if already initialized, use that one
}
// const db = firebase.firestore(); // Add this line
// const storage = firebase.storage();
const dataProvider = FirebaseDataProvider(firebaseConfig, {
logging: true,
// watch: ['posts', 'comments'],
// rootRef: 'rootrefcollection/QQG2McwjR2Bohi9OwQzP',
// rootRef: 'test/p4BPibI6rQyoYjqlPP0Q',
// rootRef: 'test/sandbox',
app: firebaseApp,
// watch: ['posts'];
// dontwatch: ['comments'];
// persistence: 'local',
persistence: 'session',
// disableMeta: true
dontAddIdFieldToDoc: true,
lazyLoading: {
enabled: true,
},
// firestoreCostsLogger: {
// enabled: true,
// },
});
console.log("Firestore instance: ", dataProvider);
console.log("Firebase App: ", firebaseApp);
const authProvider = FirebaseAuthProvider(firebaseConfig);
export const App = () => (
<Admin dataProvider={dataProvider} authProvider={authProvider} loginPage={CustomLoginPage}>
<Resource
name="posts"
list={PostList}
show={PostShow}
create={PostCreate}
edit={PostEdit}
/>
</Admin>
);
I have no problem accessing resources with Firebase library directly:
const db = firebaseApp.firestore();
db.collection("posts").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.id, " => ", doc.data());
});
}).catch((error) => {
console.log("Error getting documents: ", error);
});
Also seems to let me on just fine with the test user / pass I setup in Firebase so seems at least the API creds are ok. Since this is my first time using this library, I'm sure it's something really dumb that I'm overlooking? Whenver I add the <Resource />
into <Admin />
, I get this error:
FirebaseError: [code=invalid-argument]: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
Thanks in advance for any help!
juicy-g and IversonFrankSandqvist, cstsortan and joelgfzrapuckett and cjsewell
Metadata
Metadata
Assignees
Labels
No labels