#node.js #onedrive
Вопрос:
Я использую библиотеку one-drive-api и пытаюсь реализовать элемент enpoint для meve из папки в другую вот мой код
exports.moveItem = (req, res) => {
let { item_id, move_to_id, new_name } = req.body;
oneDriveAPI.items
.customEndpoint({
accessToken: accessToken,
URL: "/me/drive/items/" item_id,
method: 'PATCH',
body: {
parentReference: {
id: move_to_id},
},
name: new_name,
},
})
.then((r) => {
res.status(200).send({ drives: r });
})
.catch((e) => {
res.status(500).send({ error: e.message });
});
};
И я получаю эту ошибку
{
"error": "The `body` option must be a stream.Readable, string or Buffer"
}
Вот ссылка на документ от Microsoft : ссылка
и вот библиотека, которую я использую : npm
Ответ №1:
Вы можете попробовать это:
let { item_id, move_to_id, new_name } = req.body;
let body_req = { parentReference: { id: move_to_id } };
let stringified = JSON.stringify(body_req);
let b = Buffer.from(stringified);
oneDriveAPI.items
.customEndpoint({
accessToken: accessToken,
url: `/me/drive/items/${item_id}`,
method: 'PATCH',
body: b,
})
.then((r) => {
res.status(200).send({ moved: r });
})
.catch((e) => {
res.status(500).send({ error: e.message });
});
Ответ №2:
Вы должны быть в состоянии заставить это работать, предварительно натянув тело.
body: JSON.stringify({
parentReference: {
id: move_to_id},
},
name: new_name,
}),
Похоже, это ошибка из got
библиотеки, которую использует ваш onedrive-api
пакет. Передача строки должна быть в порядке, но если нет, то может возникнуть проблема с тем, как пакет onedrive-api настраивает got
запрос
Комментарии:
1. Я попытался JSON-скомпоновать его , даже преобразовать в буфер, но он все равно не проснулся
2. Если верно, что объект и строка JSON не работают, возможно, стоит открыть проблему в
onedrive-api
репозитории. Возможно, это связано с тем, как они настраиваютgot
запрос. github.com/dkatavic/onedrive-api/issues