PARSE.COM: 查询时获取数据
PARSE.COM: Fetch data at query
在 Parse 中进行查询时,仅下载 ObjectId
。
有没有办法在同一个调用中下载所有列的数据?
如果没有,哪种获取方式最快?
这是我想出来的,但是由于调用是一个接一个地完成的,所以执行起来需要很长时间。
// Create query
ParseUser user = ParseUser.getCurrentUser();
ParseQuery<Centro> query = ParseQuery.getQuery("...");
query.include(...);
query.whereEqualTo(...);
query.addAscendingOrder(...);
// Execute query
try {
CLASS = query.find();
} catch (ParseException e) {
return false;
}
// Force to fetch all data by reading a single column
for (CLASS class : classes){
try {
class.fetch();
class.getSomething();
} catch (ParseException e) { }
}
感谢任何帮助,谢谢。
我认为如果您按照文档中的方式构建查询,那么您可能会得到如下内容:
ParseQuery<ParseObject> query = ParseQuery.getQuery("FamousPerson");
query.whereEqualTo("name", "Donald Trump");
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("person", "The getFirst request failed.");
} else {
String myJob = object.getString("Job") //equals "President"
}
}
});
include
函数用于告诉 Parse 也检索其他 table 的内容。我以为我必须在那里输入 table 名称,但是,我不得不输入字段名称。
链接文档以防有人感兴趣:http://docs.parseplatform.org/android/guide/
我在下面的例子中意识到,由于 Comment
(table name) 是大写的,而第 query.include("post")
行指定 post
是小写的,所以它必须是一个字段名称。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Comment");
// Retrieve the most recent ones
query.orderByDescending("createdAt");
// Only retrieve the last ten
query.setLimit(10);
// Include the post data with each comment
query.include("post");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> commentList, ParseException e) {
// commentList now contains the last ten comments, and the "post"
// field has been populated. For example:
for (ParseObject comment : commentList) {
// This does not require a network access.
ParseObject post = comment.getParseObject("post");
Log.d("post", "retrieved a related post");
}
}
});
在 Parse 中进行查询时,仅下载 ObjectId
。
有没有办法在同一个调用中下载所有列的数据?
如果没有,哪种获取方式最快?
这是我想出来的,但是由于调用是一个接一个地完成的,所以执行起来需要很长时间。
// Create query
ParseUser user = ParseUser.getCurrentUser();
ParseQuery<Centro> query = ParseQuery.getQuery("...");
query.include(...);
query.whereEqualTo(...);
query.addAscendingOrder(...);
// Execute query
try {
CLASS = query.find();
} catch (ParseException e) {
return false;
}
// Force to fetch all data by reading a single column
for (CLASS class : classes){
try {
class.fetch();
class.getSomething();
} catch (ParseException e) { }
}
感谢任何帮助,谢谢。
我认为如果您按照文档中的方式构建查询,那么您可能会得到如下内容:
ParseQuery<ParseObject> query = ParseQuery.getQuery("FamousPerson");
query.whereEqualTo("name", "Donald Trump");
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("person", "The getFirst request failed.");
} else {
String myJob = object.getString("Job") //equals "President"
}
}
});
include
函数用于告诉 Parse 也检索其他 table 的内容。我以为我必须在那里输入 table 名称,但是,我不得不输入字段名称。
链接文档以防有人感兴趣:http://docs.parseplatform.org/android/guide/
我在下面的例子中意识到,由于 Comment
(table name) 是大写的,而第 query.include("post")
行指定 post
是小写的,所以它必须是一个字段名称。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Comment");
// Retrieve the most recent ones
query.orderByDescending("createdAt");
// Only retrieve the last ten
query.setLimit(10);
// Include the post data with each comment
query.include("post");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> commentList, ParseException e) {
// commentList now contains the last ten comments, and the "post"
// field has been populated. For example:
for (ParseObject comment : commentList) {
// This does not require a network access.
ParseObject post = comment.getParseObject("post");
Log.d("post", "retrieved a related post");
}
}
});