Gapi.client.drive.files.update () Возврат ошибки «Ошибка разбора» - PullRequest
0 голосов
/ 20 февраля 2019

Работа с API Google, и мне нужно наборы кода, которые по сути одинаковы, но дают разные результаты.

Оба просто принимают fileId и два parentId, один для удаления и одиндобавить с Google API.По сути, это операция перемещения файла на диске Google.Код, который работает, просто ожидает подпись (from, to, file) => {}, а тот, который не работает, проходит поля в обратном вызове вызова Google Picker.( Ссылка на документы API Picker )

Первый возвращает успех, а второй получает ответ от API, в котором говорится об ошибке синтаксического анализа, и совсем немного о том, что может бытьвызывая ошибку разбора.

Примеры:

Рабочий пример

moveFile = (from, to, file) => {
    return gapi.client.drive.files
        .update({
            addParents: to,
            removeParents: from,
            fileId: file,
        })
        .then((res) => {
            logger.log(funcname, `Moved File: ${file} from ${from} to ${to}.`);
            return res.result;
        });
};

Нерабочий пример

function folderSelectedCallback(folderData, fileData) {

    //folderData and fileData both have the same structure
    //{action: 'type of action', 
    //docs: [{Array Of Document Objects}],
    //viewToken: [Array of unused data]}

    //Docs Array Objects Structure (only used properties listed.)
    //{ id: 'string ID of the File',
    //parentId: 'string ID of the parent folder'}

    if (folderData.action === 'picked') {
        console.log('folderSelectedCallback(): called.');
        console.log('File Data: ', fileData);
        console.log('Folder Data: ', folderData);
        const files = fileData.docs;
        const folder = folderData.docs[0];

        console.log(files);
        console.log(folder);

        files.forEach((f) => {
            gapi.client.drive.files
                .update({
                    addParents: to,
                    removeParents: from,
                    fileId: file,
                })
                .then((res) => {
                    console.log(funcname, `Moved File: ${file} from ${from} to ${to}.`);
                    return res.result;
                }).catch(err => console.error(err));
        });
    }
}

Есть ли дополнительная информация, которая мне нужна дляисправить это?

1 Ответ

0 голосов
/ 20 февраля 2019

Рабочий окончательный пример

function folderSelectedCallback(folderData, fileData) {
    if (folderData.action === 'picked') {
        console.log('folderSelectedCallback(): called.');
        console.log('File Data: ', fileData);
        console.log('Folder Data: ', folderData);
        const files = fileData.docs;
        const folder = folderData.docs[0];

        console.log(files);
        console.log(folder);

        files.forEach((f) => {

            const options = {
                addParents: folder.id,
                removeParents: (typeof f.parentId !== 'undefined') ? f.parentId : '',
                fileId: f.id
            };

            gapi.client
                .request({
                    path: `drive/v3/files/${options.fileId}`,
                    method: 'PATCH',
                    params: options,
                    body: options
                })
                .then((response) => console.log(response))
                .catch((err) => console.error(err));
        });
    }
}

По некоторым причинам использование gapi.client.request таким образом работает правильно.

...