2017-01-16 1 views
1

Я создаю приложение IOS, используя базу данных Parse, и понял, что было бы полезно иметь возможность подключаться к базе данных с помощью PHP. Я загрузил PHP SDK и настроил его так, чтобы он соединялся. Я могу получить информацию и даже установить testObject, поэтому я знаю, что соединение действительно. Однако у меня возникают проблемы с обновлением изображения в классе User. Я установил, чтобы ACL имел открытый доступ для чтения и записи, и я специально пытаюсь загрузить одно изображение в одну учетную запись пользователя.Почему класс Parse не сохраняется?

Может ли кто-нибудь, кто понимает синтаксис, сказать мне, почему мой код не работает?

Я получаю сообщение «Хорошо до сих пор», поэтому я знаю, что ошибка связана с попыткой улова, но не понимаю, почему это не приводит ни к успеху, ни к ошибке.

$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(); 
} 

Благодаря

ответ

1

Вариант А
Я предложил бы использовать облачную код для изменения пользователей. Вы можете создать функцию облака в javascript на вашем сервере анализа, отредактировав файл cloud/main.js.

В принципе, вы можете создать функцию, как это:

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','[email protected]'); 
      $user->set('profilePic', $file); 
      $user->save($useMasterKey = true); 
     } 
    } 
    catch (ParseException $error) { 
     echo 'Error message: '.$error->getMessage(); 
    } 
+0

Боюсь, что это не сработало для меня. Это проверенный и проверенный код? Если это так, должно быть что-то в моем конце ... Это так расстраивает! :) – Dan

+0

Жаль, что это было для parse.com. Попробуй. При использовании parse-сервера таблица users всегда будет требовать $ useMasterKey = true. Я обновил свой ответ – Cliffordwh

+0

Убедитесь, что вы передали мастер-ключ в свою инициализацию. – Cliffordwh

Смежные вопросы