Vue.js Apollo数据对象在发生突变后为空
我目前正在使用apollo对我的项目进行传输(添加用户),当响应“我的对象数据”为空时。你知道为什么吗 这是我的模式类型Vue.js Apollo数据对象在发生突变后为空,vue.js,graphql,apollo,Vue.js,Graphql,Apollo,我目前正在使用apollo对我的项目进行传输(添加用户),当响应“我的对象数据”为空时。你知道为什么吗 这是我的模式类型 type UserKyrios { _id: ObjectId! firstname: String! lastname: String! email: String! password: String! creationDate: Date } `; 这是我的输入类型 input UserKyriosInput
type UserKyrios {
_id: ObjectId!
firstname: String!
lastname: String!
email: String!
password: String!
creationDate: Date
}
`;
这是我的输入类型
input UserKyriosInput {
firstname: String!
lastname: String!
email: String!
password: String!
}
`;
定义型突变
type Mutation {
upsertUserKyrios(user: UserKyriosInput!): UserKyrios
}
我的querie突变
mutation UpsertUserKyrios($user: UserKyriosInput!) {
upsertUserKyrios(user: $user) {
...userKyriosFields
creationDate
}
}
我的输出
data: {upsertUserKyrios: null}
upsertUserKyrios: null
我的解析器
upsertUserKyrios: async (_, __, { server }) => server.plugins.mongodb.UserKyrios.insertOne(),
我的脚本组件
<script>
import { UPSERT_USER_KYRIOS } from '../../../../graphql/KyriosMutations';
export default {
name: 'addUserModalComponent',
props: {
dialog: {
type: Boolean,
default: false,
},
},
data: () => ({
user: {
firstname: '',
lastname: '',
email: '',
password: '',
},
}),
methods: {
closeDialog() {
this.$emit('closeModal');
},
async submitForm() {
const userCreated = await this.$apollo.mutate({
mutation: UPSERT_USER_KYRIOS,
variables: {
user: this.user,
},
});
console.log(userCreated);
},
},
};
</script>
从“../../../../graphql/KyriosMutations”导入{UPSERT_USER_KYRIOS}”;
导出默认值{
名称:“addUserModalComponent”,
道具:{
对话框:{
类型:布尔型,
默认值:false,
},
},
数据:()=>({
用户:{
名字:'',
姓氏:“”,
电子邮件:“”,
密码:“”,
},
}),
方法:{
closeDialog(){
此.$emit('closeModal');
},
异步提交表单(){
const userCreated=等待这个。$apollo.mutate({
突变:UPSERT_USER_KYRIOS,
变量:{
用户:this.user,
},
});
console.log(userCreated);
},
},
};
您的冲突解决程序似乎缺少信息。解析程序中的第二个参数似乎没有处理来自字段的任何传入数据。而且,一旦这些参数出现,也许我对Mongo的了解还不够,但是您不应该发送数据作为插入到insertOne函数中的对象吗
我们还应该看看您的gql定义是什么样子的 您的冲突解决程序似乎缺少信息。解析程序中的第二个参数似乎没有处理来自字段的任何传入数据。而且,一旦这些参数出现,也许我对Mongo的了解还不够,但是您不应该发送数据作为插入到insertOne函数中的对象吗
我们还应该看看您的gql定义是什么样子的 解析器为您提供有关请求的一些信息: 第一个参数:父级 第二个参数:args=>包含请求负载 3d参数:上下文 第四参数:信息 突变数据存在于您不使用的第二个参数(args)中。 参数将包含一个对象。在您的情况下,
user
使用来自客户端请求的值。($variables)
在客户端:
提交表单时,在veriables对象(UserKyriosInput)中发送所有必要的信息
或
希望有意义。冲突解决程序为您提供有关请求的一些信息: 第一个参数:父级 第二个参数:args=>包含请求负载 3d参数:上下文 第四参数:信息 突变数据存在于您不使用的第二个参数(args)中。 参数将包含一个对象。在您的情况下,
user
使用来自客户端请求的值。($variables)
在客户端:
提交表单时,在veriables对象(UserKyriosInput)中发送所有必要的信息
或
希望有意义。当发生错误时,数据返回为空。你需要寻找完整的答案。这里可能存在错误 不确定这是从哪里来的。$apollo.mutate提交的,但mutate通常会返回一个承诺
使用它们的一个好方法是使用钩子:当发生错误时,数据返回为空。你需要寻找完整的答案。这里可能存在错误 不确定这是从哪里来的。$apollo.mutate提交的,但mutate通常会返回一个承诺
使用它们的一个好方法是使用钩子:我像这样添加了用户变量,但它不能向上运行UserKyrios:async({user},{server})=>server.plugins.mongodb.UserKyrios.insertOne(user),您肯定必须传递某种数据作为第二个参数。它应该像你在那里一样。在解析器中控制台.log(user)来验证数据是否到达了那里,这不是一个坏主意。如果不是,则可能错误地定义了突变。如果您还可以更新您的原始帖子,以包含从“../../../../graphql/KyriosMutations”导入的内容
import{UPSERT\u USER\u KYRIOS}代码>实际上导入会很好。我认为问题在于我的变异声明,因为当我删除解析器时,我得到了相同的东西…这听起来像是我们要得到的。在你的问题中,没有足够的信息来决定去哪里。需要对数据流动的位置进行更多的调试。我添加了这样的用户变量,但它不能向上运行UserKyrios:async({user},{server})=>server.plugins.mongodb.UserKyrios.insertOne(user),您肯定必须传递某种数据作为第二个参数。它应该像你在那里一样。在解析器中控制台.log(user)来验证数据是否到达了那里,这不是一个坏主意。如果不是,则可能错误地定义了突变。如果您还可以更新您的原始帖子,以包含从“../../../../graphql/KyriosMutations”导入的内容import{UPSERT\u USER\u KYRIOS}代码>实际上导入会很好。我认为问题在于我的变异声明,因为当我删除解析器时,我得到了相同的东西…这听起来像是我们要得到的。在你的问题中,没有足够的信息来决定去哪里。需要对数据流动的位置进行更多的调试。
upsertUserKyrios: async (_, args, { server }) =>
variables: {
user: {
firstname: this.user.firstName
lastname: this.user.lastName
email: this.user.email
password: this.user.password
}
}
variables: {
user: {
...this.user
}
}