NextJS / Dirctus - 使用 updateMe SDK 函数更新当前用户

问题描述 投票:0回答:1

系统:

NextJS:14.2.1 下一个验证:4.24.7 直接:10.10.5

问题

我想在一个简单的表单中更新当前用户的详细信息。我正在使用 Directus 提供的 updateMe 函数。提交表格时我收到错误:

我也使用他们的 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.log(error);
    }
    setLoading(false);
  };

首先我认为问题可能是请求来自不安全的本地主机,但我部署了它并遇到了同样的问题。我也尝试只处理 PATCH 请求,但这效果不佳。我还设置了所有用户角色的所有权限以允许一切(仅用于测试)

再次:使用 SDK 登录和注册正在运行...

编辑

我尝试用 Postman 做这个补丁并且它有效,但是为什么?

rest next.js sdk next.js13 directus
1个回答
0
投票

我找到了解决方案:

问题出在 Directus API 的 CORS 设置上。

您需要将其添加到 Directus 配置中:

ORS_ENABLED: "true"
CORS_ORIGIN: "true"
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.