我正在寻找 3 天如何实现嵌套突变。
我正在使用 Nuxt JS、带有 Graphql 和 graphql-tag 模块的 Strapi 以及 MongoDb
我有两个集合:Heaturls 和 heatmap,有一个关系 Heatmap 拥有并属于一个 Heaturl
我使用 store 来查询和变异。
我想要的是向我的 Heatuls 集合添加新条目,然后在我的 Heatmap 集合中使用我之前创建的 heaturl 条目的 ID 创建新条目。
这是我的函数 Store.js
async saveHeaturl({
commit,dispatch
},datas) {
console.log(this.app)
return await this.app.apolloProvider.clients.defaultClient.mutate({
mutation: CREATE_HEAT_MUTATION,variables: {
...datas,site: this.$auth.$state.user.site,}
}).then((res) => {
commit('addHeatItem',res.data.createHeaturl.heaturl)
console.log('res ???',res.data)
dispatch("saveHeatmap",res.data.createHeaturl.heaturl)
})
},async saveHeatmap({
commit,},datas) {
console.log("on a bien disptach le bordel",datas)
return await this.app.apolloProvider.clients.defaultClient.mutate({
mutation: CREATE_HEATMAP_MUTATION,variables: {
heatdatas:JSON.stringify({}),heaturl_id: datas._id
}
}).then(res => {
console.log("res ======",res)
})
},
saveHeatmap 在 saveHeaturl 完成后调度。
这是我的查询结构
export const CREATE_HEATMAP_MUTATION = gql `
mutation createHeatmap($heatdatas: JSON!,$heaturl_id: ID!) {
createHeatmap(
input: { data: { heatdatas: $heatdatas,heaturl_id: $heaturl_id } }
) {
heatmap {
_id
heaturl_id {
_id
}
}
}
}
`
export const CREATE_HEAT_MUTATION = gql `
mutation createHeaturl(
$status: Boolean!
$recordingflow: Int!
$urlname: String!
$pagecasting: Boolean!
$pageurl: String!
$datamatching: Int!
$shortdesc: String!
$pagesnapshot: JSON!
$site:ID!
) {
createHeaturl(
input: {
data: {
urlname: $urlname
recordingflow: $recordingflow
status: $status
pagecasting: $pagecasting
pageurl: $pageurl
datamatching: $datamatching
shortdesc: $shortdesc
pagesnapshot: $pagesnapshot
site:$site
}
}
) {
heaturl {
_id
createdAt
status
urlname
pageurl
shortdesc
}
}
}
`
当我使用我的表单保存我的 heaturl 时,一切正常(它保存在我的数据库中)并且我得到了最后创建的 ID。当我调度第二个动作时,我总是得到一个错误。
{,…}
data: {createHeatmap: null}
createHeatmap: null
errors: [{message: "Cannot convert object to primitive value",locations: [{line: 2,column: 3}],…}]
0: {message: "Cannot convert object to primitive value",…}
extensions: {code: "INTERNAL_SERVER_ERROR",exception: {,…}}
locations: [{line: 2,column: 3}]
message: "Cannot convert object to primitive value"
path: ["createHeatmap"]
我不知道如何解决这个问题。我尝试过更改类型格式但没有成功。
我不明白为什么我有这样的错误。 我和别人的收藏有其他关系,还不错。
谁能给我一个线索或任何教程来解决我的问题。
非常感谢大家
法比安