我想获取数据库消息部分的最高记录,检查电子邮件值是否与用户电子邮件不匹配。如果是,则重复下一个记录。但如果它不匹配,我希望它用我的'消息值'填充我的应用程序中的textview,然后从数据库中删除该记录。
以下是我写入数据库代码的示例:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
//setting user info in message class
message m = new message();
m.setName(user.getDisplayName().toString());
m.setMessage(messageEdt.getText().toString());
m.setEmail(user.getEmail().toString());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("messages").child(uniqueGeneratedMessageid);
myRef.setValue(m);
将其添加到数据库中,就像这样......
我希望它能够选择最高值,而不必引用特定的ygmailcom100
。
答案 0 :(得分:1)
FirebaseDatabase database = FirebaseDatabase.getInstance().getReference();
Query mQuery = database.child("messages").limitToLast(1);
修改强>
您似乎正在尝试从聊天应用加载消息。如果是这种情况,我建议您添加ChildEventListener
而不是ValueEventListener
,主要原因ChildEventListener
将仅返回新添加的消息,其中ValueEventListener
为ChildEventListener
每次添加新消息时,都将返回新添加的消息和整个数据库快照。在效率和数据使用,等待时间等方面,这将是非常昂贵的。
根据您上面给我的内容,您可以实现private final ChildEventListener mChildEventListener;
private final Query mQuery;
private final FirebaseDatabase database;
database = FirebaseDatabase.getInstance().getReference();
mQuery = database.child("messages").limitToLast(1);
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
String value = dataSnapshot.getValue(String.class);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
这样的内容:
mQuery.addChildEventListener(childEventListener);
mChildEventListener = childEventListener;
};
onDestroy
然后在ChildEventListener
方法中,您需要删除public void onDestroy() {
super.onDestroy();
if (mChildEventListener != null) {
mQuery.removeEventListener(mChildEventListener);
}
}
以避免内存泄漏。
x <- data.frame(c(1:5),c(0))
colnames(x) <- c("val1", "val2")
foo <- function() {
for(i in 1:length(x[,1])) {
bar(i)
}
print(x)
}
bar <- function(i) {
if(x[i,2] == 0) {
x[i,2] <- 1
print(x[i,])
}
return(x)
}
>foo()
val1 val2
1 1 1
val1 val2
2 2 1
val1 val2
3 3 1
val1 val2
4 4 1
val1 val2
5 5 1
val1 val2
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0