我正在寻找 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", locations: [{line: 2, column: 3}],…}
extensions: {code: "INTERNAL_SERVER_ERROR", exception: {,…}}
locations: [{line: 2, column: 3}]
message: "Cannot convert object to primitive value"
path: ["createHeatmap"]
我不知道如何解决这个问题。我尝试更改类型格式但没有成功。
我不明白为什么我有这样的错误。我与其他收藏有其他关系,并且工作正常。
谁能给我一个线索或任何教程来解决我的问题。
非常感谢大家
法比安