Ошибка: Model :: findById требует аргумент id loopback android - PullRequest
0 голосов
/ 08 мая 2018

Я новичок в loopback, и у меня есть проблема с ним. Я создал базу данных Postgres и управлял ею, и все, кажется, работает нормально. База данных создается загрузочными файлами в формате json и содержит необходимые значения.

Но когда я хочу выполнить метод findById, я получаю следующую проблему:

Ошибка для запроса GET / api / members / 1? Id = 1: Ошибка: Model :: findById требует аргумент id

определение модели:

{
    "name": "Member",
    "strict": true,
    "idInjection": true,
    "base": "User",
    "options": {
       "validateUpsert": true
    },
    "properties": {
    "firstname": {
    "type": "string",
    "required": true
    },
    "lastname": {
    "type": "string",
    "required": true
    },
    "questiontype": {
    "type": "number",
    "required": true
    },
    "questionanswer": {
    "type": "string",
    "required": true
    }
    },
    "validations": [],
    "relations": {
    "issues": {
       "type": "hasMany",
       "model": "Issue",
       "foreignKey": "authorId"
    }

И я вызываю findById из моей учетной записи. Активность:

 connect_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RestAdapter restAdapter = new RestAdapter(getApplicationContext(), "http://" + MY_IP + ":3000/api");
            MemberRepository memberRepo = restAdapter.createRepository(MemberRepository.class);
            memberRepo.findById(1, new ObjectCallback<Member>() {
                @Override
                public void onSuccess(Member member) {
                    System.out.println("Found !");
                }

                public void onError(Throwable t) {
                    System.out.println("Fail");
                }
            });
        }
    });

Дело в том, что когда я выполняю метод findById на localhost: 3000 / explorer из loopback, он возвращает правильный результат и вообще никакой ошибки.

Проблема появляется только на Android. Я использую библиотеку strongloop, предоставляемую loopback, которая использует класс UserRepository, который содержит методы login, logout, find, ... Таким образом, они не должны быть никаких ошибок, исходящих от самого метода. Что привело меня к актуальной проблеме, я действительно не могу понять, откуда она?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Итак, после нескольких дней попыток, я просто отказался от strongloop и попробовал использовать Retrofit2. Оказывается, теперь все работает отлично.

Еще раз спасибо @Signo за ваше время! Довольно разочаровывающий финал, но я думаю, что, как вы сказали, он, вероятно, не предоставил правильного запроса, и я предполагаю, что тот факт, что он больше не был обработан, просто прикончил меня.

0 голосов
/ 10 мая 2018

Я постараюсь дать несколько советов, дайте мне знать, если что-то из этой работы, чтобы я мог отредактировать ответ:

  • Из вашей ошибки: /api/members/1?id=1 это правильно, что он использует members вместо member в пути?members взято из этой строки English.plural(className);;
  • Если у вас есть доступ к библиотеке Strongloop, попробуйте добавить точку останова в операторе возврата getVerbForMethod в RestContract здесь и проверьте, возвращает ли ваш вызов GET;
  • Здесь ответ для вашей ошибки, но сгенерированный из вызова js, где они предлагают отредактировать объектremoteMethod;

ps: с сайта Strongloop говорится, что библиотека Android больше не поддерживается в активном режиме

...