支持事务的 Firebase 查询



我之前问了一个不完全清楚的问题。以下是一些用于在安卓应用中连接到Firebase数据库的代码;

public void updateDBMatches(final String fieldUpd, final Object valueUpd) {
    String getArgument = getArguments().getString("matchid");
    final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").child("Match_01");
    //final DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Matches").orderByChild("gameID").equalTo(getArgument);;
    ref.runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {
            Map<String, Object> updates = new HashMap<String,Object>();
            updates.put(fieldUpd, valueUpd);
            ref.updateChildren(updates);
            return null;
        }
        @Override
        public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
        }
    });
}

注释掉的行(最终的数据库参考...(是我想要实现的,但我无法传入查询(它在等于时中断(。如果我重写代码以引用传递给查询对象的数据库连接,我将失去将更新放入事务块 (.runTransaction( 的能力。

所有的帮助都表示赞赏。

不能针对 Query 对象运行事务,该对象可能引用一组未知的位置。 请注意,查询的 API 文档未显示要调用的名为 runTransaction 的方法。

如果要执行事务,则只能使用 DatabaseReference 对象执行此操作,该对象引用数据库中的单个已知位置。 这是交易运作的唯一方式。 请注意,它有一个 runTransaction 方法。

请阅读有关交易的更多信息。

最新更新