我想了解如何动态添加文档中的字段。
我关注the doc。但是,我想在“for”语句中使用addField方法,从而以编程方式生成字段。
我试过这个:
Builder document = Document.newBuilder();
document.setId(id);
// for statement start
com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value);
document.addField(field);
// for statement end
document.build();
但它似乎不起作用。当我正在尝试时,我打印出来
com.google.appengine.api.search.Document$Builder@2604ed54
而当我使用原始代码时:
String myDocId = "PA6-5000";
Document doc = Document.newBuilder()
// Setting the document identifer is optional.
// If omitted, the search service will create an identifier.
.setId(myDocId)
.addField(Field.newBuilder().setName("content").setText("the rain in spain"))
.addField(Field.newBuilder().setName("email").setText(userEmail))
.addField(Field.newBuilder().setName("domain").setAtom(userDomain))
.addField(Field.newBuilder().setName("published").setDate(new Date()))
.build();
我使用上面的代码得到了预期的结果。
我如何操纵这个以便将addfield()放入for语句?
感谢您的帮助。
答案 0 :(得分:0)
文档暗示Document.Builder是可变的,但通常你应该在每次调用后重新分配构建器,以防它不是。
Builder document = Document.newBuilder();
document.setId(id);
com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value);
document = document.addField(field);
document.build();
在您的情况下,您看到的是构建器上的toString()方法,而不是文档本身。问题是最后一行。
试试这个:
Builder builder = Document.newBuilder();
builder.setId(id);
com.google.appengine.api.search.Field.Builder field = Field.newBuilder().setName(key).setAtom(value);
builder = builder.addField(field);
Document document = builder.build();
然后你就可以放弃你的for循环而离开你。