我可以使用一个任意的(适用于Firebase)对象映射来使用
updateChildren()
,就像我可以使用setValue()
一样吗?以下代码可正常工作:public void addReview(FbReview review, AddCallback callback) {
Firebase root = mDataRoot.child(REVIEWS_ROOT).child(review.getReviewId());
root.setValue(review, newAddListener(review, callback));
}
其中FbReview是一个简单的数据持有类,具有空构造函数和用于自动数据结构化的getter(在setValue()
中使用对象的示例在Firebase setValue()文档中展示)。
然而,如果我尝试从网页上尝试等效的updateChildren()
后续示例:
@Override
public void addReview(FbReview review, AddCallback callback) {
Map<String, Object> updates = new HashMap<>();
updates.put(REVIEWS_ROOT + "/" + review.getReviewId(), review);
mDataRoot.updateChildren(updates, newAddListener(review, callback));
}
我收到一个错误,提示无法解析我定义的FbReview对象:
FirebaseException: 无法解析类为... FbReview 的节点
如果我尝试使用上面的updateChildren()
代码,但传递一个字符串(例如review.getSubject()
),而不是一个对象,则可以正常工作,这表明对象解析不适用于updateChildren()
。
这是正确的吗?
updateChildren()
。但是如果您愿意,仍然可以自己使用Jackson。请参见https://dev59.com/r1oU5IYBdhLWcg3wV2C8#37548330。 - Frank van Puffelen