返回突变结果的正确方式是通过使用GraphQL的阿波罗和Mongoose库。GraphQL是一种用于API的查询语言和运行时环境,它允许客户端精确地指定需要的数据,并且能够一次性获取多个资源。阿波罗是一个流行的GraphQL实现,提供了用于构建和管理GraphQL API的工具和库。
Mongoose是一个优秀的Node.js对象模型库,用于在MongoDB中定义数据模型和执行数据库操作。它与GraphQL结合使用时,可以方便地定义GraphQL模式和解析器,并将其与Mongoose模型关联起来。
要返回突变结果,可以按照以下步骤进行操作:
以下是一个示例突变的GraphQL模式定义:
type Mutation {
createUser(name: String!, email: String!): User!
}
type User {
id: ID!
name: String!
email: String!
}
在服务器端,可以使用Mongoose编写一个突变解析器函数来创建用户:
const { User } = require('./models');
const resolvers = {
Mutation: {
createUser: async (_, { name, email }) => {
const user = new User({ name, email });
await user.save();
return user;
},
},
};
在客户端,可以使用阿波罗客户端库发起一个创建用户的突变请求:
import { gql, useMutation } from '@apollo/client';
const CREATE_USER = gql`
mutation CreateUser($name: String!, $email: String!) {
createUser(name: $name, email: $email) {
id
name
email
}
}
`;
function CreateUserForm() {
const [createUser, { loading, error }] = useMutation(CREATE_USER);
const handleSubmit = async (event) => {
event.preventDefault();
const name = event.target.name.value;
const email = event.target.email.value;
try {
const { data } = await createUser({ variables: { name, email } });
console.log('User created:', data.createUser);
} catch (error) {
console.error('Error creating user:', error);
}
};
return (
<form onSubmit={handleSubmit}>
<input type="text" name="name" placeholder="Name" />
<input type="email" name="email" placeholder="Email" />
<button type="submit" disabled={loading}>Create User</button>
{error && <p>Error: {error.message}</p>}
</form>
);
}
这是一个简单的示例,演示了如何使用阿波罗和Mongoose的GraphQL来返回突变结果。根据具体的业务需求,可以根据突变的类型和操作进行更复杂的实现。
领取专属 10元无门槛券
手把手带您无忧上云