Error: Model::findById require argument id loopback android

Error: Model::findById require argument id loopback android

我是环回的新手,我遇到了问题。 我已经创建并管理了一个 Postgres 数据库,一切似乎都运行良好。该数据库由 json 中的引导文件创建,并包含所需的值。

但是当我想执行 findById 方法时,出现以下问题:

Error for the request GET /api/members/1?id=1 : Error: Model::findById require the id argument

模型定义是:

{
    "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"
    }

然后我从我的 LoginActivity 调用 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");
                }
            });
        }
    });

问题是,当我从环回执行 localhost:3000/explorer 上的 findById 方法时,它 returns 得到了正确的结果,并且完全没有错误。

该问题仅在 Android 上出现。我使用 loopback 提供的 strongloop 库,它使用包含登录、注销、查找等方法的 UserRepository class。所以它们不应该是来自方法本身的任何错误。这导致我遇到实际问题,我真的无法弄清楚它来自哪里?

我会尝试提供一些建议,让我知道这是否可行,以便我编辑答案:

  • 根据您的错误:/api/members/1?id=1 在路径中使用 members 而不是 member 是否正确? members 来自 thisEnglish.plural(className); ;
  • 如果您有权访问 Strongloop 库,请尝试在 RestContract heregetVerbForMethod 的 return 语句中添加断点并检查是否你的来电 returns GET;
  • 同样的错误有一个 answer here,但它是从 js 调用中生成的,他们建议编辑对象的 remoteMethod;

ps:来自 Strongloop website 它指出 Android 库不再被积极维护

所以在尝试了几天之后,我放弃了 strongloop 并尝试使用 Retrofit2。结果现在一切正常。

再次感谢@Signo 抽出宝贵时间!相当令人沮丧的结局,但我认为正如你所说,它可能没有提供正确的请求,我想它不再被维护的事实让我失望了。