Я создаю приложение nodeJs с GraphQl, я хочу, чтобы, когда пользователь отправляет данные на сервер, он вставляет некоторые данные в таблицу пользователей, а затем получает последний вставленный идентификатор и использует его для вставки остальных данных в таблицу компании в MySQL БД, я использую GraphQl
например, когда пользователь отправляет следующие данные, такие как (имя пользователя, адрес электронной почты, имя компании, тип компании), он вставляет имя пользователя, адрес электронной почты в таблицу пользователя, а затем получает идентификатор этого пользователя и вставляет его в usersId в таблице компании с остальные данные (companyName, companyType) надеюсь, это достаточно ясно
Вот мой код
const graphql = require('graphql')
const Rcompany = require('../models/company')
const RUsers = require('../models/users')
const {
GraphQLObjectType,
GraphQLString,
GraphQLSchema,
GraphQLID,
GraphQLInt,
GraphQLNonNull,
GraphQLList
} = graphql
const CompanysType = new GraphQLObjectType({
name: 'company',
fields:()=>({
id: {type: GraphQLID},
companyName: {type: GraphQLString},
companyType: {type: GraphQLString},
usersId: {type: GraphQLString},
user: {
type: UserType,
resolve(parent, args){
return RUsers.findById(parent.companyName)
}
}
})
})
const UserType = new GraphQLObjectType({
name: 'user',
fields:()=>({
id: {type: GraphQLID},
username: {type: GraphQLString},
email: {type: GraphQLString},
posts:{
type: CompanysType,
resolve(parent, args){
return RUsers.findById(parent.id)
}
}
})
})
const Mutation = new GraphQLObjectType({
name: 'Mutation',
fields:{
addPost:{
type:UserType,
args:{
username:{type: new GraphQLNonNull(GraphQLString)},
email:{type: new GraphQLNonNull(GraphQLString)}
},
resolve(parent, args){
let hUsers = new RUsers({
username: args.username,
email:args.email
})
return hUsers.save().then((data) => {
// here is where i dont know how to proceed
})
}
}
}
})
module.exports = new GraphQLSchema({
mutation:Mutation
})
пожалуйста, посоветуйте мне, как мне продолжить?





Модуль проверки async для nodejs. Имеет метод водопада. Вы можете выполнять шаги последовательно с водопадом, и это хорошо, что позволяет передавать результаты на следующий шаг с предыдущего шага. Это решит вашу проблему. например
async.waterfall([
function firstStep(done) {},
function secondStep(previousResult, done) {}
],
function (err) {});