为什么 Parse Class 没有保存?
Why is the Parse Class not saving?
我正在使用 Parse 数据库构建一个 IOS 应用程序,并意识到能够使用 PHP 连接到数据库会很有用。我已经下载了 PHP SDK 并进行了设置以便连接。我可以检索信息,甚至设置了一个 testObject,所以我知道连接是有效的。但是,我在更新用户 class 中的图像时遇到问题。我已将 ACL 设置为具有 public 读写访问权限,并专门尝试将一张图像上传到一个用户帐户。
任何了解语法的人都可以告诉我为什么我的代码不起作用吗?
我收到了 "Okay so far" 消息,所以我知道失败与 try catch 有关,但不明白为什么它既不输出成功也不输出错误。
$file = ParseFile::createFromFile("filename.jpg", "image.jpg", "image/jpg");
$file->save();
$getUser = new ParseQuery("_User");
$getUser->equalTo("objectId", "2Ic26GaYRE");
$results = $getUser->first();
$results->set("profilePic", $file);
echo "Okay so far";
try {
$results->save();
echo 'success';
}
catch (ParseException $ex) {
echo 'error';
echo $ex->getMessage();
}
谢谢
选项 A
我建议使用云代码来修改用户。您可以通过编辑 cloud/main.js 文件在您的解析服务器上的 javascript 中创建一个云函数。
基本上,您可以创建这样的函数:
Parse.Cloud.define("modifyuser", function(request, response){
var query = new Parse.Query(Parse.User);
query.equalTo('objectId', request.params.objectId);
query.find({
useMasterKey: true,
success: function(results){
if(results.length>0){
var user = results[0];
user.set("SOMEPARAMETER",true);
user.save().then(
function(result){
},
function(error){
console.log("Error: " + error.code + " " + error.message);
});
}
}
},
error: function(error){
response.error('query error: '+ error.code + " : " + error.message);
}
});
});
并从您的客户端调用此函数。
$ParseCloud::run("modifyuser", ["objectId" => "THEUSEROBJECTID"]);
选项 B
你可以试试这个 php 版本!
$file = ParseFile::createFromFile("imagePath.jpg", "image.jpg", "image/jpg");
$file->save();
try {
$query = new ParseQuery("_User");
$query->equalTo("username", "myUsername");
$results = $query->find($useMasterKey = true);
foreach($results as $user) {
$user->set('email','me@myEmail.com');
$user->set('profilePic', $file);
$user->save($useMasterKey = true);
}
}
catch (ParseException $error) {
echo 'Error message: '.$error->getMessage();
}
我正在使用 Parse 数据库构建一个 IOS 应用程序,并意识到能够使用 PHP 连接到数据库会很有用。我已经下载了 PHP SDK 并进行了设置以便连接。我可以检索信息,甚至设置了一个 testObject,所以我知道连接是有效的。但是,我在更新用户 class 中的图像时遇到问题。我已将 ACL 设置为具有 public 读写访问权限,并专门尝试将一张图像上传到一个用户帐户。
任何了解语法的人都可以告诉我为什么我的代码不起作用吗?
我收到了 "Okay so far" 消息,所以我知道失败与 try catch 有关,但不明白为什么它既不输出成功也不输出错误。
$file = ParseFile::createFromFile("filename.jpg", "image.jpg", "image/jpg");
$file->save();
$getUser = new ParseQuery("_User");
$getUser->equalTo("objectId", "2Ic26GaYRE");
$results = $getUser->first();
$results->set("profilePic", $file);
echo "Okay so far";
try {
$results->save();
echo 'success';
}
catch (ParseException $ex) {
echo 'error';
echo $ex->getMessage();
}
谢谢
选项 A
我建议使用云代码来修改用户。您可以通过编辑 cloud/main.js 文件在您的解析服务器上的 javascript 中创建一个云函数。
基本上,您可以创建这样的函数:
Parse.Cloud.define("modifyuser", function(request, response){
var query = new Parse.Query(Parse.User);
query.equalTo('objectId', request.params.objectId);
query.find({
useMasterKey: true,
success: function(results){
if(results.length>0){
var user = results[0];
user.set("SOMEPARAMETER",true);
user.save().then(
function(result){
},
function(error){
console.log("Error: " + error.code + " " + error.message);
});
}
}
},
error: function(error){
response.error('query error: '+ error.code + " : " + error.message);
}
});
});
并从您的客户端调用此函数。
$ParseCloud::run("modifyuser", ["objectId" => "THEUSEROBJECTID"]);
选项 B 你可以试试这个 php 版本!
$file = ParseFile::createFromFile("imagePath.jpg", "image.jpg", "image/jpg");
$file->save();
try {
$query = new ParseQuery("_User");
$query->equalTo("username", "myUsername");
$results = $query->find($useMasterKey = true);
foreach($results as $user) {
$user->set('email','me@myEmail.com');
$user->set('profilePic', $file);
$user->save($useMasterKey = true);
}
}
catch (ParseException $error) {
echo 'Error message: '.$error->getMessage();
}