查询 Parse 数据库以从 Parse 数据中的单个列获取数据 Class
Querying a Parse database to get the data from one single column within a Parse data Class
你好
我正在玩 Parse,我成功地创建了一个包含两个 classes/tables、用户和帖子的云数据库,我能够注册和登录用户,并且允许他们向数据库发帖。
我现在正在研究如何查询数据库并获取已发布的数据,我的帖子 class/table 由四列组成: |对象ID |文字 |用户 | createdAt |.
我希望能够 select 并在我的应用程序中显示 'text' 列中保存的所有数据。我的数据库经验很少,如果这是一个愚蠢的问题,我很抱歉。
到目前为止的代码:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> text, ParseException e) {
if (e == null) {
Toast.makeText(MainActivity.this, text.toString(), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();
}
}
});
我知道我需要将查询限制为仅来自 'text' 列的数据,因此我显然在第 1 行和第 2 行之间缺少一行代码。
任何帮助,将不胜感激。谢谢
来自解析API
You can restrict the fields returned by calling selectKeys with a
collection of keys. To retrieve documents that contain only the score
and playerName fields (and also special built-in fields such as
objectId, createdAt, and updatedAt):
ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.selectKeys(Arrays.asList("playerName", "score"));
List<ParseObject> results = query.find();
因此,要仅检索文本字段,您所要做的就是:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.selectKeys(Arrays.asList("text"));
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> posts, ParseException e) {
if (e == null) {
List<String> postTexts = new ArrayList<String>();
for(ParseObject post : posts){
postTexts.add(post.getString("text"));
}
Toast.makeText(MainActivity.this, postTexts.toString(), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();
}
}
});
API reference
Doc reference(就在标题“查询数组值”之前)
你好
我正在玩 Parse,我成功地创建了一个包含两个 classes/tables、用户和帖子的云数据库,我能够注册和登录用户,并且允许他们向数据库发帖。
我现在正在研究如何查询数据库并获取已发布的数据,我的帖子 class/table 由四列组成: |对象ID |文字 |用户 | createdAt |.
我希望能够 select 并在我的应用程序中显示 'text' 列中保存的所有数据。我的数据库经验很少,如果这是一个愚蠢的问题,我很抱歉。
到目前为止的代码:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> text, ParseException e) {
if (e == null) {
Toast.makeText(MainActivity.this, text.toString(), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();
}
}
});
我知道我需要将查询限制为仅来自 'text' 列的数据,因此我显然在第 1 行和第 2 行之间缺少一行代码。
任何帮助,将不胜感激。谢谢
来自解析API
You can restrict the fields returned by calling selectKeys with a collection of keys. To retrieve documents that contain only the score and playerName fields (and also special built-in fields such as objectId, createdAt, and updatedAt):
ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); query.selectKeys(Arrays.asList("playerName", "score")); List<ParseObject> results = query.find();
因此,要仅检索文本字段,您所要做的就是:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.selectKeys(Arrays.asList("text"));
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> posts, ParseException e) {
if (e == null) {
List<String> postTexts = new ArrayList<String>();
for(ParseObject post : posts){
postTexts.add(post.getString("text"));
}
Toast.makeText(MainActivity.this, postTexts.toString(), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "query error: " + e, Toast.LENGTH_LONG).show();
}
}
});
API reference
Doc reference(就在标题“查询数组值”之前)