#reactjs #firebase #google-cloud-firestore #react-redux #react-redux-firebase
#reactjs #firebase #google-cloud-firestore #react-redux #react-redux-firebase
Вопрос:
Я создаю приложение, используя React / Redux и Firestore. Я делал это раньше с Angular и React . Разрешения для моей базы данных firestore широко открыты для целей разработки.
Когда я не вошел в систему, все работает хорошо. Однако, когда я вхожу в систему, я получаю сообщение об ошибке, что у меня отсутствуют или недостаточно разрешений.
Вот мой файл правил:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Вот мой файл package.json.
redux-firestore listener error: FirebaseError: Missing or insufficient permissions.
at new n (webpack-internal:///336:485:23)
at eval (webpack-internal:///336:9625:28)
at eval (webpack-internal:///336:9626:18)
at n.onMessage (webpack-internal:///336:9659:10)
at eval (webpack-internal:///336:9565:26)
at eval (webpack-internal:///336:9596:37)
at eval (webpack-internal:///336:5192:31)
У меня были немалые трудности с версиями и заставить все работать. Возможно ли, что это аналогичный конфликт?
{
"name": "triviaapp",
"version": "1.0.0",
"main": "index.js",
"author": "Joshua Foxworth",
"license": "MIT",
"scripts": {
"serve": "live-server public/",
"build": "webpack",
"dev-server": "webpack-dev-server"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/free-solid-svg-icons": "^5.15.1",
"@fortawesome/react-fontawesome": "^0.1.12",
"babel-cli": "6.24.1",
"babel-core": "6.25.0",
"babel-plugin-transform-class-properties": "6.24.1",
"babel-plugin-transform-object-rest-spread": "6.23.0",
"babel-preset-env": "1.5.2",
"babel-preset-react": "6.24.1",
"bootstrap": "^4.5.3",
"css-loader": "0.28.4",
"firebase": "^8.0.2",
"firebase-tools": "^8.15.0",
"live-server": "^1.2.0",
"node-sass": "^5.0.0",
"normalize.css": "7.0.0",
"react": "16.14.0",
"react-bootstrap": "^1.4.0",
"react-dom": "16.14.0",
"react-modal": "2.2.2",
"react-redux": "5.0.5",
"react-redux-firebase": "2.2.4",
"react-router-dom": "4.1.2",
"redux": "3.7.2",
"redux-firestore": "^0.14.0",
"redux-thunk": "^2.3.0",
"sass-loader": "6.0.6",
"style-loader": "0.18.2",
"uuid": "3.1.0",
"validator": "8.0.0",
"webpack-dev-server": "2.5.1"
},
"devDependencies": {
"@babel/core": "^7.12.3",
"@babel/preset-env": "^7.12.1",
"babel-loader": "^7.1.5",
"webpack": "^3.12.0"
}
}
Вот действие, в котором я добавляю новый «вопрос». Это работает, если я не вошел в систему, но не если я вошел в систему.
// These are action creators. This is possible because we are using the middleware thunk
export const createQuestion = (question) => {
console.log(question);
return (dispatch, getState, {getFirebase, getFirestore}) => {
// make async call
const firestore = getFirestore();
console.log(firestore);
firestore.collection('questions').add({
...question,
userId : 'tbd',
userName : 'tbd',
dateCreated:new Date()
}).then(()=>{
dispatch({type:'CREATE_QUESTION', question});
}).catch((err)=>{
dispatch({type:'CREATE_QUESTION_ERROR', err});
})
}
}
Комментарии:
1. Ошибка предполагает, что на самом деле это проблема с правилами безопасности. Пожалуйста, отредактируйте вопрос, чтобы показать код, который выполняет запрос, вместе с вашими правилами безопасности.
2. Я опубликовал правила. Я использую новый для меня шаблон firestoreConnect. Я считаю, что опубликованная часть обрабатывает запрос.
3. Я не вижу причин для сбоя этого запроса только при входе пользователя в систему.
Ответ №1:
Я публикую «решение» здесь, чтобы кто-нибудь столкнулся с этой проблемой, они не тратили столько времени, сколько у меня. Я вручную создал пользователя для работы в системе firebase. По каким-то причинам это была проблема. Как только я создал больше приложений и worker с пользователем, созданным через приложение, все было в порядке.
Вот так.