Предложите некоторую хорошую платформу MVC в [закрытом] жемчуге

Я получил это исключение, используя немного другой подход к чтению из моей базы данных, но именно так я решил проблему.

Прежде всего, моим правилам базы данных понравилось это:

{
"rules": {
  "student": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
      }
    }
  }
}

Раньше, чтобы писать в базу данных ученика, я использовал этот код в своей работе:

 mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.e(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.e(TAG, "onAuthStateChanged:signed_out");
            }
            // ...
        }
    };
    ...
    Student student = new Student();
    student.setPhoneNumber("+23480547455343");
    student.setCountryOfOrigin("Nigeria");
    mDatabaseReference.child("student").child(user.getUid()).setValue(student).
                addOnCompleteListener(DetailsCaptureActivity.this, 
                                   new OnCompleteListener<Void>() {
     ...
     });

Обратите внимание, как дочернее имя (ученик) совпадает с именем ребенка в данных firebase правила?

Теперь, чтобы прочитать данные этого пользователя, я сделал это:

 //Set up an AuthStateListener that responds to changes in the user's sign-in state:
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            user = firebaseAuth.getCurrentUser();
            if (user != null) {

                   databaseReference = firebaseDatabase.getReference().child("student").child(user.getUid());
                   databaseReference.addValueEventListener(new ValueEventListener() {
                      @Override
                      public void onDataChange(DataSnapshot dataSnapshot) {
                          Student student = dataSnapshot.getValue(Student.class);
                          phoneNumberTextView.setText(student.getPhoneNumber());
                      }

                      @Override
                      public void onCancelled(DatabaseError databaseError) {

                          Log.e(TAG, databaseError.getMessage());
                      }
                  });

            } else {
                Log.e(TAG, "onAuthStateChanged:signed_out");
            }
        }
    };

Я получил исключение, исключенное из разрешения, если только:

databaseReference = firebaseDatabase.getReference().child(user.getUid());
15
задан tereško 8 October 2013 в 10:21
поделиться

10 ответов

Я скажу Вам прямо сейчас, что Катализатор имеет безусловно лучшую репутацию среди разработчиков Perl с точки зрения быстрой разработки приложений платформа MVC.

С точки зрения "чистого" MVC я не уверен, что существует даже что много "сформировавшихся" или по крайней мере готовых к производству альтернатив.

, Если Катализатор не кажется правильным Вам, то Вы могли положиться на легкую платформу CGI:: Приложение , чтобы удовлетворить Вашим потребностям или смотреть на некоторые менее известные платформы MVC как PageKit и майское дерево .

21
ответ дан 30 November 2019 в 23:57
поделиться

Другой альтернативой помимо тех уже упомянутых является Непрерывность; однако, это (поскольку имя предназначено для допущения), основанный на продолжении, а не MVC в типичном смысле. Однако, it’s стоящий упоминания, потому что это - одна из лучших веб-платформ Perl.

Тем не менее я люблю Катализатор намного лучше, чем любая из альтернатив. И it’s все еще улучшение все время! Оборотная сторона этого - то, что текущий предпочел кодировать подходы, продолжают развиваться в довольно поспешном клипе †“, но для последних версий, был сильный акцент на совместимость API, таким образом, нагрузка является теперь главным образом умственной, а не административной. Предстоящий порт внутренностей Американскому лосю в особенности готов предоставить некоторые превосходные преимущества.

, Но самый большой спор в пользу Катализатора, IMO, Цепочечный тип отправки. Я не видел ничего как он во всех web-framework-dom, и это - самый превосходный инструмент для хранения кода как DRY как возможного. Это связывается хорошо с другой большой вещью, которую Катализатор обеспечивает, а именно, uri_for †“метод, который берет контроллер и набор аргументов и затем создает URI, который отправил бы тому месту, которое это возвращает. Вместе, эти средства означают, что можно структурировать пространство URI любой способ, которым Вы считаете право, все же одновременно может структурировать Ваши контроллеры, чтобы избежать, чтобы дублирование логики, и сохранило шаблоны независимыми от структуры URI.

It’s, просто блестящий.

8
ответ дан 30 November 2019 в 23:57
поделиться

Комментарии Seconding сделаны другими: Катализатор (который более или менее разветвился от майского дерева) безусловно и далеко самое полное и устойчивые из них. Существует книга Jonathan Rockway, который, конечно, поможет Вам бороться с нею.

В дополнение к 'Цепочечному' типу отправки: Regex (и: LocalRegex), методы отправки обеспечивают огромную гибкость. Последнее приложение, которое мы создали здесь, поддерживает много разрозненно выглядящих URL посредством просто горстки использования нижних индексов: LocalRegex.

мне также особенно нравится то, что Вы не ограничены конкретным языком шаблонной обработки или базой данных. Список рассылки (и книга) у обоих есть предпочтение Шаблона:: Инструментарий (также, как и I), и DBIx:: Класс (мы продолжаем использовать Класс:: DBI), но можно использовать в значительной степени что-либо, что Вы любите. Катализатор является удивительно агностическим тот путь.

не пугаются Катализатора факта, кажется, требует половины CPAN как зависимостей. После того как Вы будите его и выполнение, это - хорошо смазанная машина. Это достигло уровня зрелости теперь, когда, после того как Вы боретесь с ним, Вы находите, что это 'исчезает в фон'. Вы проводите свое время, решая бизнес-потребности, не борясь с инструментами, которые Вы используете.

Это делает то, что это говорит относительно олова. Катализатор ++

5
ответ дан 30 November 2019 в 23:57
поделиться

Существует также CGI:: Приложение, которое больше похоже на кишки платформы. Это помогает человеку записать основной CGI и биты связующего звена на нем для создания его столь пользовательским, как им нравится. Таким образом, у Вас может быть он использование едва любые модули или примерно все под солнцем.

4
ответ дан 30 November 2019 в 23:57
поделиться

Проигрывание с Сидение на корточках последние несколько дней и я должны сказать, что это смотрит очень перспективная и забава использовать.

микро webframework (или веб-микроплатформа ;-) и в большой степени под влиянием Кемпинг , который записан в Ruby.

нбар. Сидение на корточках (& Кемпинг), не имеют образцовых компонентов испеченными в платформу. Вот авторы, комментирует модели... "Модели? Целый мир является Вашей моделью.;-) Я всегда был двойствен об определении политики здесь. Используйте любые работы для Вас"

5
ответ дан 30 November 2019 в 23:57
поделиться

Катализатор является способом пойти. Существует также Jifty, но (в прошлый раз я смотрел), он имел ужасную документацию.

2
ответ дан 30 November 2019 в 23:57
поделиться

Если Вы уже знаете о Катализаторе, то я рекомендую фокусироваться на нем. Это является сформировавшимся, хорошо зарегистрировано и имеет очень большую базу пользователей, сообщество и набор плагинов.

2
ответ дан 30 November 2019 в 23:57
поделиться

Для Вашей проблемы я смотрел бы в Jifty:: Плагин:: REST, который предоставляет доступ к моделям и действиям с помощью различных форматов.

Позволяют мне просто сказать, что Jifty не имеет ужасной документации. Однако большая часть дополнительной документации является документацией API, но существует очень малошумящий список рассылки, который имеет полезные подсказки и ссылки на приложения.

Wiki в http://jifty.org/ является другим ресурсом, который имеет полезные биты.

, Если Ваша цель состоит в том, чтобы сделать видеомагазин (мой любимый сравнительный тест для 4GLs и платформы CRUD) днем, это действительно достойное внимания!

2
ответ дан 30 November 2019 в 23:57
поделиться

Другой, который опции Подставка для бочек при использовании в сочетании с модулем BigTop это может уменьшить время, которое требуется для создания простых сайтов CRUD.

1
ответ дан 30 November 2019 в 23:57
поделиться

Также есть ClearPress , который я могу рекомендовать как полезную базу данных приложения. Это требует меньше зависимостей, чем катализатор. Мы написали несколько больших приложений с ним, и я управляю веб-сайтом лестницы Badminton, используя его.

1
ответ дан 30 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: