Связать файл при синтаксическом анализе.Облако

#parse-platform

#parse-платформа

Вопрос:

Я загружаю изображение через REST API и получаю ответ, как показано ниже

 {
  "url": "http://files.parsetfss.com/346a0978-68c7-4d08-a446-62f7422469e7/tfss-8b131ff0-5fd0-4dce-92e8-b7b94da5db9e-pic.jpg",
  "name": "tfss-8b131ff0-5fd0-4dce-92e8-b7b94da5db9e-pic.jpg"
}
  

Я хочу связать это изображение с Promotion объектом. У меня также есть Location объект, который содержит массив Promotion s. Вот мой код:

 function promiseToAddPromotionToLocation (locationID, promotion) {
  var query = new Parse.Query("Location");
  return query.get(locationID).then(function (location) {
    var promotionObject = promotionObjectFromJSON(promotion);
    location.add("promotions", promotionObject);
    return location.save();
  }, function (error) {
    return Parse.Promise.error(error);
  });
}

function promotionObjectFromJSON (promotion) {
  var Promotion = Parse.Object.extend("Promotion");
  var promotionObject = new Promotion();

  if ("message" in promotion) {
    promotionObject.set("message", promotion.message);
  }

  //This causes an error: Uncaught Tried to save an object containing an unsaved file.
  if ("photo") {
    promotionObject.set("photo", promotion.photo);
  }

  return promotionObject;
}
  

Когда я закомментирую часть настройки photo, она сохранится promotion должным образом, но когда я пытаюсь установить файл, выдается сообщение об ошибке, в котором говорится, Uncaught Tried to save an object containing an unsaved file. как я могу решить эту проблему?

Кстати, promiseToAddPromotionToLocation вызывается с параметрами, приведенными ниже:

 {
  "locationID": "fvOiAsoogc", 
  "promotion":{
    "message":"Some text", 
    "photo":{"name": "tfss-8b131ff0-5fd0-4dce-92e8-b7b94da5db9e-pic.jpg", "__type": "File"} 
  }
}
  

Комментарии:

1. Если я правильно понимаю, вы загружаете файл с помощью REST, а затем хотите прикрепить его к Parse. Объект, использующий JavaScript API?

2. Да, загружаю файл с помощью REST, а затем хочу присоединить его к синтаксическому анализу. Создайте объект с помощью облачной функции, которая вызывается REST. Эта облачная функция вызывает ‘promiseToAddPromotionToLocation’.

3. Я не знаю ни одного способа сделать это, если только вы вручную не настроите внутренние компоненты Parse.File с информацией (именем и, возможно, URL-адресом), возвращаемой при загрузке REST. Нет документированного способа сделать это, поэтому он не будет поддерживаться.

4. Но разве это не похоже parse.com/docs/rest#files-associating ? Итак, я загружаю файл. Затем я вызываю свою облачную функцию с именем файла из upload.

5. Ах, оказывается, что это задокументировано неправильно. Мне также нужно указать URL. parse.com/questions/image-association

Ответ №1:

Причина заключалась в том, что я передавал информацию о файле без url. Документы по связыванию файлов показывают, что для этого нужны только name и type . Однако это неверно. Для этого также требуется url . Этот вопрос на форуме Parse раскрывает это.