#javascript #firebase #firebase-realtime-database
#javascript #firebase #firebase-realtime-database
Вопрос:
Я сохранил некоторые данные в разделе «событие» и это местоположение / ключ, которые мне потребовались для ссылки на пользователя. Итак, я попытался сохранить user / eventlist {ссылка: Event_Key}. Но я получил ошибку, а затем даже объединил со строкой — хотя я получил ошибку.
Консоль выводится
OnSumit Working
Postjobc.js:11 getLocation Working
Postjobc.js:47 Fist Condition Ok : undefined
Postjobc.js:68 0
Postjobc.js:23 Eventinsert Working :-MF0_ZKTuNdiN0QbIjbd (I get key )
Postjobc.js:18 position Working
logger.ts:115 [2020-08-18T12:41:19.218Z]
@firebase/database:
FIREBASE WARNING: set at /users/userId/eventlist/-MF0_berJy7yKkaZvS-G failed: permission_denied
Правила Firebase
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"jobpost":{
"events":{
".read" : "auth.uid != null",
".write": "auth.uid != null"
}
База данных в реальном времени
-https://Project.firebaseio.com/celebrity_program/
-events
-MppF9d5aIkhia2u5kka (Event_key)
-user
-$uid
-eventList
-Mdhhshhsheuer
eventref : Event_Key
Случай 1
const Eventinsert = () => {
var EventsId = Firebase.database().ref('events/').push({
Title: Title,
Role: Role,
Location: Location,
Description: Description,
SelectionBy: SelectionBy
})
var str = EventsId.key;
var loo = true;
do {
if (typeof str !== undefined) {
console.log(str); [console output val= -MErnwYwknRZz5MFH ]
EventListInsert(str);
loo = false;
}
} while(loo)
}
EventListInsert (Key){
console.log(key); [console output : key =-MErnwYwknRZz5MFH ]
var userId = localStorage.getItem("User");
var d = new Date();
Firebase.database().ref('user/UserId/eventlist/').push({
event: key,
latitude: la,
longitude: lo,
date: d
})
}
}
Я получил ошибку как «Ошибка: ошибка Reference.push: первый аргумент содержит неопределенный в свойстве ‘eventlist.event»
Случай 2
const Eventinsert = () => {
var EventsId = Firebase.database().ref('events/').push({
Title: Title,
Role: Role,
Location: Location,
Description: Description,
SelectionBy: SelectionBy
})
var str = EventsId.key;
var loo = true;
do {
if (typeof str !== undefined) {
var val= "str" str;
console.log(val); [console output val= str-MErnwYwknRZz5MFH ]
EventListInsert(val);
loo = false;
}
} while(loo)
}
var userId = localStorage.getItem("User");
function EventListInsert ( Key ){
var d = new Date();
Firebase.database().ref('user/UserId/eventlist/').push({
event: Key,
latitude: la,
longitude: lo,
date: d
})
}
Я получаю ту же ошибку, что и «Ошибка: ошибка Reference.push: первый аргумент содержит неопределенный в свойстве ‘eventlist.event»
Но если я удалю event: Key, он успешно запустится, Event_List добавится в базу данных. Пользователь должен иметь ссылку на то, что я публикую? Как это решить. Есть ли какой-либо другой способ ref?
Ответ №1:
ошибка указывает на то, что event
свойство может быть неопределенным. typeof str !== undefined
не определяет, является ли строка неопределенной. Было бы лучше просто проверить, str
не является ли это ложным использованием if(str)
вместо этого.
Комментарии:
1. У меня был тестовый str, получающий ключ с помощью console.log (str) в EventList () . Я получил ключ.
2. Завершаю работу Postjobc.js: 11 Получаю рабочее местоположение Postjobc.js: 47 Первое условие Ок: не определено Postjobc.js: 68 0 Postjobc.js: 23 вставляю рабочее:-MF0_ZKTuNdiN0QbIjbd Postjobc.js: 18 положение Рабочего регистратора.ts: 115 [2020-08-18T12: 41:19.218Z] @firebase/база данных: ПРЕДУПРЕЖДЕНИЕ FIREBASE: установлено в /users/userId/eventlist/-MF0_berJy7yKkaZvS-G сбой: разрешение отклонено