gpt4 book ai didi

java - 使用 Firebase 改造帖子

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:41 26 4
gpt4 key购买 nike

请任何人帮助。这是我的 API 方法

@POST("/user/new.json")
Call createUser(@Body User user);

这是我在 MainActivity 中的调用

 Retrofit retrofit=new Retrofit.Builder().baseUrl("https://XXXXXX.firebaseio.com").addConverterFactory(GsonConverterFactory.create()).build();

Api api=retrofit.create(Api.class);

User user=new User(1,"Sam");

Call<User> call=api.createUser(user);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
Log.d("sam","run");
}

@Override
public void onFailure(Call<User> call, Throwable t) {
Log.d("sam","error");
}
});

这是User.java

public class User {

int id;

String name;

public User(int id, String name) {
this.id = id;
this.name = name;
}
}

输出是这样的:-

"user" : {"new" : {"-KBgcQTomo8xGpnv5raM" : {"id" : 1,"name" : "Sam"}}}

但我想要这样的输出:-

"user" : {"new" : {"id" : 1,"name" : "Sam"}}

这是 Retrofit + Firebase 的教程

请帮忙......

最佳答案

在 firebase 中,当您 POST你正试图推送到 list of data存储在 POST 的 URL 下。因此,不可能 POST 到/user/new.json 并且不将数据存储在新的 firebase 生成的 key 下,例如/user/new 下的“-KBgcQTomo8xGpnv5raM”。

如果您想完全控制放置数据的位置,您必须使用 PUT .但是,将您的新条目直接作为/user/new 是没有意义的。后续条目将去往何处?

如果您不接受服务器端 key 分配,那么正常的解决方案是使用您将强制执行唯一性的条目的某些部分。例如,名称或数字 ID 都可以作为新用户的键,以便可以添加多个用户。

基于改造 API 并使用名称作为唯一键,这:

@POST("/user/new.json")
Call createUser(@Body User user);

会变成:

@PUT("/user/new/{name}.json")
Call createUser(@Path("name") String name, @Body User user);

和:

Call<User> call=api.createUser(user);

那么会是:

Call<User> call=api.createUser(user.name, user);

现在的布局是:

"user" : {"new" : {"Sam": {"id" : 1,"name" : "Sam"}}}

因此可以添加 future 的用户,只要他们的名字不是 Sam。

关于java - 使用 Firebase 改造帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35722617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com