我正在用GraphQl构建一个nodeJs应用程序,我想当用户向服务器发送数据时,它将在用户表中插入一些数据,然后获取最后插入的ID,并使用它在公司中插入其余数据MySQL数据库中的数据表,正在使用GraphQl
例如,当用户提交以下数据(例如,用户名,电子邮件,companyName,companyType)时,它将在用户表中插入用户名,电子邮件,然后获取该用户的ID并将其插入公司的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
})
请建议我如何进行此操作?
答案 0 :(得分:0)
结帐asyncjs的异步模块。它具有瀑布方法。您可以按顺序执行瀑布操作,而这样做的好处是,您可以将结果传递到上一步的下一步。这将解决您的问题。 例如
async.waterfall([
function firstStep(done) {},
function secondStep(previousResult, done) {}
],
function (err) {});