我正在尝试在Firebase和Hasura之间同步我的用户。我的Firebase函数没有抛出任何错误,但是,它并没有更新Hasura。有人能向我解释一下我缺少的部分吗?
我的火球功能:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { request, gql, GraphQLClient } = require('graphql-request')
const config = functions.config();
const endpoint = config.hasura.url;
const adminSecret = config.hasura.admin;
const graphQLClient = new GraphQLClient(endpoint, {
headers: {
"content-type": "application/json",
"x-hasura-admin-secret": adminSecret
}
});
admin.initializeApp(functions.config().firebase);
exports.createUser = functions.auth.user().onCreate(async user => {
const { uid: id, email } = user;
const mutation = gql`
mutation($id: String!, $email: String) {
insert_users_one(object: { user_firebase_id: $id, user_email: $email }) {
user_firebase_id
user_email
}
}
`;
try {
const data = await graphQLClient.request(mutation, {
id,
email,
});
return data;
} catch (e) {
console.log(e);
}
});
日志返回
Function execution took 521 ms, finished with status: 'ok'
createUser
}
字符串文字创建了一个新行(n
(并声明了一个注释@DIGI Byte
。
还有其他方法,但为了保持简单,我改变了这个的结构
const mutation = gql`
mutation($id: String!, $email: String) {
insert_users_one(object: { user_firebase_id: $id, user_email: $email }) {
user_firebase_id
user_email
}
}
`;
至
const mutation = gql`mutation($id: String!, $email: String){insert_users(objects: [{user_firebase_id: $id,user_email: $email}]) {affected_rows}}`;
我知道必须有一种更有效的方法来解决这个问题,但如果其他人遇到类似的问题。我把这个留在这里。