Я создаю приложение, которое создает процессы для команд для завершения. В этих процессах есть члены, которые являются администраторами, которые могут писать им, а затем просто обычные пользователи, которые могут их читать. Когда пользователь создает процесс в первый раз, они по умолчанию становятся администраторами. Однако всякий раз, когда я пытаюсь создать процесс, я получаю «разрешение отказано» от Firebase, и я не могу. У меня есть по существу одно и то же правило для чтения (просто заменив «путь пользователей» на путь «админы»), и я умею хорошо читать процессы. Просто не в состоянии их сделать. Есть идеи, почему это происходит.Правила безопасности Firebase, возвращающие разрешения при попытке записи в базу данных
Вот правила безопасности для процессов:
"processes": {
"$processID": {
".read": "auth.uid != null && data.child('users/' + auth.uid).val() === true",
".write": "auth.uid != null && newData.child('admins/' + auth.uid).val() === true"
}
}
Вот структура данных для процессов:
processes
-KQ_j5Yt75GktE5pBRFS
admins
HESy7LE7JbeNyHKaGeyWRhNIuE83: true
createdOn: "2016-09-01T04:00:00.000Z"
description: "This is an example process"
name: "Example Personal Process"
tasks
team: "-KQ_iwUmXsx0zasoPxT9"
users
HESy7LE7JbeNyHKaGeyWRhNIuE83: true
Вот функция, где я создаю процесс:
actions: {
createProcess(processName, processDescription) {
var teamId = this.controllerFor('processes/new').get('teamId');
var self = this;
console.log("team: "+teamId);
let currentUser = this.get('user').get('currentUser');
let team = this.get('store').peekRecord('team', teamId);
let user = this.get('store').peekRecord('user', currentUser.id);
console.log("user "+currentUser.id)
let process = this.get('store').createRecord('process', {
team: team,
user: user,
admin: user,
name: processName,
description: processDescription
});
user.get('processes').pushObject(process);
user.get('processesLead').pushObject(process);
team.get('processes').pushObject(process);
console.log("about to save process");
process.save().then(function() {
console.log(process.admin.id);
user.save();
console.log("user saved");
team.save();
console.log("team saved");
}).then(() => this.transitionTo('team', teamId));
}
Вот часть моей модели пользователя.
processes: DS.hasMany('process'),
tasks: DS.hasMany('task'),
processesLead: DS.hasMany('process', { inverse: 'admins' }),
teamsLead: DS.hasMany('team', { inverse: 'admins' }),
tasksLead: DS.hasMany('task', { inverse: 'admins' }),
processMember: DS.hasMany('process', { inverse: 'members' }),
teamMember: DS.hasMany('team', { inverse: 'members' }),
taskMember: DS.hasMany('task', { inverse: 'members' })
Вот часть моей модели процесса:
users: DS.hasMany('user'),
admins: DS.hasMany('user', { inverse: 'processesLead' }),
members: DS.hasMany('user', { inverse: 'processMember' })
показать код, где вы пишете DB –
И ради бога, замените строку даты/времени на отметку времени UNIX –
Просто добавленный код. @DimaRostopira –