我使用Vue3和composition API以及vue-apollo
。现在我想用useMutation()
向graphql端点发送一个变体,如下所示。问题是,useQuery工作得很好。
一切都很好,然后我做了npm run build
,但是在不同的git分支。我想从那时起,它就不再工作了。
try {
const { mutate, onDone, onError, error } = useMutation(ADD_CARDOWNER_MUTATION)
mutate({
email: register.email,
username: register.email,
password: '',
first_name: register.firstName,
last_name: register.lastName,
nfc_user_avatar: register.avatar_id,
nfc_user_addresses: register.addresses,
nfc_user_contacts: register.contacts,
nfc_user_links: register.links,
nfc_user_company: register.companyName,
nfc_user_position: register.position,
nfc_user_title: register.title,
nfc_user_position__public: register.positionPublic,
nfc_user_company__public: register.companyPublic,
nfc_user_agb__accepted: register.agbAccepted,
})
onDone((data) => {
//formNav.next()
console.log('data', data)
})
onError(() => {
console.log(error.value)
})
} catch (error) {
console.error(error)
}
}
这就是ADD_CARDOWNER_MUTATION
突变
mutation AddCardOwner(
$email: String
$password: String
$username: String
$first_name: String
$last_name: String
$nfc_user_addresses: [NFCUserAddress]
$nfc_user_contacts: [NFCUserContact]
$nfc_user_links: [NFCUserLink]
$nfc_user_agb__accepted: Boolean
$nfc_user_position__public: Boolean
$nfc_user_company__public: Boolean
$nfc_user_company: String
$nfc_user_position: String
$nfc_user_title: String
$nfc_user_avatar: String
) {
registerNFCUser(
input: {
email: $email
password: $password
username: $username
first_name: $first_name
last_name: $last_name
nfc_user_addresses: $nfc_user_addresses
nfc_user_contacts: $nfc_user_contacts
nfc_user_links: $nfc_user_links
nfc_user_agb__accepted: $nfc_user_agb__accepted
nfc_user_company__public: $nfc_user_company__public
nfc_user_position__public: $nfc_user_position__public
nfc_user_company: $nfc_user_company
nfc_user_position: $nfc_user_position
nfc_user_title: $nfc_user_title
nfc_user_avatar: $nfc_user_avatar
}
) {
nfc_user_id
user_id
registered
username
status
error
}
}
这是我得到的错误
这是我的主页. js
import { provide, createApp, defineAsyncComponent, h } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import './assets/main.css'
import UUID from 'vue3-uuid'
import { ApolloClient, createHttpLink, InMemoryCache } from '@apollo/client/core'
import { DefaultApolloClient } from '@vue/apollo-composable'
const httpLink = createHttpLink({
uri: import.meta.env.VITE_PUBLIC_API_URI,
credentials: 'include',
})
const cache = new InMemoryCache()
const apolloClient = new ApolloClient({
link: httpLink,
cache: cache,
})
const app = createApp({
setup() {
provide(DefaultApolloClient, apolloClient)
},
render: () => h(App),
})
const requireComponent = import.meta.glob('./components/**/**/*.vue')
Object.entries(requireComponent).forEach(([path, definition]) => {
const componentName = path
.split('/')
.pop()
.replace(/\.\w+$/, '')
app.component(componentName, defineAsyncComponent(definition))
})
app.use(router)
app.use(createPinia())
app.use(UUID)
app.mount('#app')
1条答案
按热度按时间jgzswidk1#
我找到了一个解决方案。它相当简单。我只是把带有
const { mutate, onDone, onError, error } = useMutation(ADD_CARDOWNER_MUTATION)
的行放在它所在的函数之外。现在它可以正常工作了。之前
现在