当我想从parse db(mongo)中检索ParseObjects(帖子)以显示在我的Android应用程序中时,我需要先将新字段添加到云代码中的ParseObject
中,然后再交付给客户端。这些字段对于客户端来说是仅必需的,因此,我不是要将它们保存到云/数据库中。但是出于某些奇怪的原因,如果我将其他字段保存到云中,似乎其他字段只能成功交付给客户端。
这样的事情会起作用:
Parse.Cloud.define("getPosts", function(request, response){
const query = new Parse.Query("Post");
query.find()
.then((results) => {
results.forEach(result => {
result.set("cloudTestField", "this is a testing server cloud field");
});
return Parse.Object.saveAll(results);
})
.then((results) => {
response.success(results);
})
.catch(() => {
response.error("wasnt able to retrieve post parse objs");
});
});
这会将所有新字段交付给我的客户。 但是如果我不将它们保存到数据库中,而只是在客户端交付之前添加它们 像这样的东西:
Parse.Cloud.define("getPosts", function(request, response){
const query = new Parse.Query("Post");
query.find()
.then((results) => {
results.forEach(result => {
result.set("cloudTestField", "this is a testing server cloud field");
});
response.success(results);
})
.catch(() => {
response.error("wasnt able to retrieve post parse objs");
});
});
然后由于某种原因,在我的android studio(客户端日志)中,我在键“ cloudTestField”上收到了空值
ParseCloud.callFunctionInBackground("getPosts", params,
new FunctionCallback<List<ParseObject>>(){
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (objects.size() > 0 && e == null) {
for (ParseObject postObj : objects) {
Log.d("newField", postObj.getString("cloudTestField"));
}
} else if (objects.size() <= 0) {
Log.d("parseCloudResponse", "sorry man. no objects from server");
} else {
Log.d("parseCloudResponse", e.getMessage());
}
}
});
由于某种原因,输出为:
newField: null
如何在不保存到数据库的情况下将字段添加到云中的ParseObjects
答案 0 :(得分:2)
结果是,不能将非持久性字段添加到ParseObject。 因此,我需要将parseObjects转换为Json,现在它的工作就像一个魅力:
Parse.Cloud.define("getPosts", function(request, response){
const query = new Parse.Query("Post");
var postJsonList = [];
query.find()
.then((results) => {
results.forEach(result => {
var post = result.toJSON();
post.cloudTestField = "this is a testing server cloud field";
postJsonList.push(post);
});
response.success(postJsonList);
})
.catch(() => {
response.error("wasnt able to retrieve post parse objs");
});
});