Соедините загруженный файл со связанной моделью с помощью Strapi - PullRequest
0 голосов
/ 01 июля 2019

Я использую Strapi, Sqlite3 и React. Я хочу отправить форму с приложенным файлом.

У меня есть модель Job, которая выглядит следующим образом:

{
  "connection": "default",
  "collectionName": "jobs",
  "info": {
    "name": "job",
    "description": ""
  },
  "options": {
    "increments": true,
    "timestamps": true,
    "comment": ""
  },
  "attributes": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "resume": {
      "model": "file",
      "via": "related",
      "plugin": "upload"
    },
    "jobcategory": {
      "model": "jobcategory",
      "via": "jobs"
    }
  }
}

Я отправляю ввод текста методом submitCareer и uploadFile для загрузки:

export async function submitCareer(url, formValues) {
    try {
        const entries = await rootUrl.createEntry(url, formValues);
        return entries;
    } catch (err) {
        console.log(err);
    }
}

export async function uploadFile(formValues) {
    try {
        const upload = await rootUrl.upload(formValues);
        return upload;
    } catch (err) {
        console.log(err);
    }
}

Это использование в моем компоненте Карьера:

const handleSubmit = (event) => {
        const formData = new FormData();
        formData.append("files", fileInput.current.files[0]);   

        submitCareer('jobs', values);

        uploadFile(formData);


        setValues({
            firstName: '',
            lastName: '',
            email: '',
            resume: null
        })

        event.preventDefault();
    }

Я получаю этот ответ:

{
        "id": 66,
        "firstName": "John",
        "lastName": "Doe",
        "email": "john@gmail.com",
        "jobcategory": null,
        "lname": null,
        "created_at": 1561988031279,
        "updated_at": 1561988031279,
        "resume": {}
    }

Итак, как я могу связать резюме с моделью работы?

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Связывание модели с файлом

Вы должны создать процесс с двумя шагами:

  1. Создать File -> POST /upload.
  2. Создать Jobs с id из FileResponse -> POST /jobs.

Пример:

    const handleSubmit = (event) => {
      const formData = new FormData();
      formData.append("files", fileInput.current.files[0]);
      resumeUploadFile = await uploadFile(formData);

      const jobsInput = {...jobs, ...{resume: resumeUploadFile.id}}
      await submitCareer('jobs', jobsInput);

      setValues({
        firstName: '',
        lastName: '',
        email: '',
        resume: null
      })

      event.preventDefault();
    }

https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#file-upload

Связывание файлов с записью

Вы можете также связать файл с созданной записью, затем сначала создать Jobs, а затем загрузить ссылку ResumeFile с добавленными новыми полями, такими как refId из Jobs (Jobs -> id), ref в вашем случае jobs и field=resume

https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#examples

0 голосов
/ 01 июля 2019

Когда вы хотите загрузить файл и связать его с записью.Вы должны сначала создать запись, если это еще не сделано.А затем загрузите свой файл, отправив информацию об изображении записи.

Вся документация здесь https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#examples

...