СледующийJS: 14.2.1 СледующийАутентификация: 4.24.7 Директус: 10.10.5
Я хочу обновить данные текущего пользователя в простой форме. Я использую функцию updateMe, предоставляемую Directus. При отправке формы я получаю ошибку:
Я также использую их функции SDK для входа и регистрации, и они работают нормально.
Моя функция handleSubmit (я показываю функцию до возврата, потому что в возврате следует простая форма, которая запускает handleInputChange:
'use client'
import { useRouter } from "next/navigation";
import { useState } from "react"
import { createDirectus, rest, updateMe } from '@directus/sdk';
export default function ProfilEdit({ userContent, userId }) {
const router = useRouter();
const [loading, setLoading] = useState(false);
const [formData, setFormData] = useState({
first_name: "",
last_name: "",
email: "",
});
const [error, setError] = useState("");
const client = createDirectus('*****MYDIRECTUSURL').with(rest());
const handleInputChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
const handleFormSubmit = async (e) => {
e.preventDefault();
setLoading(true);
try {
const response = await client.request(updateMe({
first_name: formData.first_name,
last_name: formData.last_name,
email: formData.email,
}));
if (response.data) {
router.push('/dashboard');
} else {
setError('Fehler beim Aktualisieren des Benutzers');
}
} catch (error) {
setError('Fehler beim Aktualisieren des Benutzers');
console.info(error);
}
setLoading(false);
};
Сначала я подумал, что проблема может заключаться в том, что запрос поступает с незащищенного локального хоста, но я развернул его и столкнулся с той же проблемой. Я также пытался работать просто с запросом PATCH, но это тоже не сработало. Я также установил все разрешения для всех пользовательских ролей, чтобы разрешить все (только для тестирования).
Еще раз: вход и регистрация с помощью SDK работают...
Я попробовал сделать этот ПАТЧ с Postman, и это сработало, но почему?
Я нашел решение:
Проблема была в настройках CORS API Directus.
Вам нужно добавить это в конфиг Directus:
ORS_ENABLED: "true"
CORS_ORIGIN: "true"