无法使用阿波罗客户端上的突变添加数据

发布于 2025-01-19 16:03:56 字数 2296 浏览 2 评论 0原文

阿波罗服务器客户端的突变:

import { gql } from "@apollo/client";
export const UPLOAD_IMAGE = gql`
  mutation uploadImage($url: String!, $description: String!, $posterName: String!) {
    uploadImage(post: { url: $url, description: $description , posterName: $posterName }) {
      
      
      url
      posterName
      description
      
    
    }
  }
`;

尝试添加新帖子:

import { useMutation, useQuery } from "@apollo/client";
import { UPLOAD_IMAGE } from "./mutation";
import { useState } from "react";
function NewPost() {
  
  const [posterName, setPosterName] = useState(null);
  const [uu, {err}] = useMutation(UPLOAD_IMAGE);
  const [url, setUrl] = useState(null);
  const [description, setDescription] = useState(null);
  
  
  const addPost = () => {
    uu({
      variables: {
        url: url,
        description: description,
        posterName: posterName,
        
      },
    });
  };

  return (
    <div className="App">
     
      Url--- <input onChange={(e) => setUrl(e.target.value)} />
      <br />
      PosterName--- <input onChange={(e) => setPosterName(e.target.value)} />
      <br />
      Description ---
      <input onChange={(e) => setDescription(e.target.value)} />
      <br />
      <button onClick={() => addPost()}>Add Post</button>
    </div>
  );
}

export default NewPost;

在服务器端,阿波罗服务器上的突变:

typedef:

type Mutation {
    uploadImage(
      url: String
      description: String
      posterName: String
    ): ImagePost
  }

Resolver:

Mutation: {
      uploadImage: async (_,args) => {
        //const { data } = await axios.get('https://api.unsplash.com/photos/?client_id=2zceQd7D4SraKoqW_GjPzXboSup3TKRIPk7EXfJBcAs');
        const newPost = {
          id: uuid.v4(),
          url: args.url,
          description: args.description,
          posterName: args.posterName,
          binned: false,
          userPosted: true,

        }
        await client.lpushAsync("postedImagesList",JSON.stringify(newPost));
        return newPost;
      }
    }

创建新帖子时,我将其添加到Redis中以存储它。但是该帖子不会从输入字段和按钮中添加。它确实使用游乐场工作,不确定为什么。我正在使用lrangeasync检索数据,以从REDIS中获取数据。

Mutation on client side of Apollo server:

import { gql } from "@apollo/client";
export const UPLOAD_IMAGE = gql`
  mutation uploadImage($url: String!, $description: String!, $posterName: String!) {
    uploadImage(post: { url: $url, description: $description , posterName: $posterName }) {
      
      
      url
      posterName
      description
      
    
    }
  }
`;

Trying to add new post:

import { useMutation, useQuery } from "@apollo/client";
import { UPLOAD_IMAGE } from "./mutation";
import { useState } from "react";
function NewPost() {
  
  const [posterName, setPosterName] = useState(null);
  const [uu, {err}] = useMutation(UPLOAD_IMAGE);
  const [url, setUrl] = useState(null);
  const [description, setDescription] = useState(null);
  
  
  const addPost = () => {
    uu({
      variables: {
        url: url,
        description: description,
        posterName: posterName,
        
      },
    });
  };

  return (
    <div className="App">
     
      Url--- <input onChange={(e) => setUrl(e.target.value)} />
      <br />
      PosterName--- <input onChange={(e) => setPosterName(e.target.value)} />
      <br />
      Description ---
      <input onChange={(e) => setDescription(e.target.value)} />
      <br />
      <button onClick={() => addPost()}>Add Post</button>
    </div>
  );
}

export default NewPost;

Mutation on Server side, Apollo server:

Typedef:

type Mutation {
    uploadImage(
      url: String
      description: String
      posterName: String
    ): ImagePost
  }

Resolver:

Mutation: {
      uploadImage: async (_,args) => {
        //const { data } = await axios.get('https://api.unsplash.com/photos/?client_id=2zceQd7D4SraKoqW_GjPzXboSup3TKRIPk7EXfJBcAs');
        const newPost = {
          id: uuid.v4(),
          url: args.url,
          description: args.description,
          posterName: args.posterName,
          binned: false,
          userPosted: true,

        }
        await client.lpushAsync("postedImagesList",JSON.stringify(newPost));
        return newPost;
      }
    }

When a new post is created I am adding it to Redis to store it. But the post does not get added from the input fields and button. It does work using the playground, not sure why. I am retrieving the data using lrangeasync to get back data from Redis.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

策马西风 2025-01-26 16:03:56

试试这个!

const addPost = async () => {
  await uu({
    variables: {
      post: {
        url: url,
        description: description,
        posterName: posterName,
      },
    },
  });
};

Try this!

const addPost = async () => {
  await uu({
    variables: {
      post: {
        url: url,
        description: description,
        posterName: posterName,
      },
    },
  });
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文