我是环回的新手,我遇到了问题。 我创建并管理了一个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"
}
我从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上从loopback执行findById方法时,它会返回正确的结果并且根本没有错误。
只有在Android上才会出现此问题。我使用loopback提供的strongloop库,它使用包含login,logout,find,..方法的UserRepository类。所以它们不应该是来自方法本身的任何错误。这导致我到实际问题,我真的无法弄清楚它是从哪里来的?
答案 0 :(得分:1)
因此,经过几天的尝试,我只是放弃了strongloop并尝试使用Retrofit2。事实证明一切都很完美。
再次感谢@Signo为您服务!相当令人沮丧的结局,但我认为正如你所说的那样,可能没有提供正确的请求,而且我认为它已经完全没有了,我刚刚完成了这个事实。
答案 1 :(得分:0)
我会尝试提供一些建议,让我知道是否有任何工作,以便我可以编辑答案:
/api/members/1?id=1
是否正确,它在路径中使用members
而不是member
? members
来自this行English.plural(className);
; Strongloop
库,请尝试在getVerbForMethod
here的RestContract
的return语句中添加断点,并检查您的调用是否返回{{1 }}; GET
; ps:来自Strongloop website它声明Android库不再被主动维护了