使用graphql nodejs在多个mysql表中插入数据

时间:2018-12-13 09:26:57

标签: node.js graphql

我正在用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
})

请建议我如何进行此操作?

1 个答案:

答案 0 :(得分:0)

结帐asyncjs的异步模块。它具有瀑布方法。您可以按顺序执行瀑布操作,而这样做的好处是,您可以将结果传递到上一步的下一步。这将解决您的问题。 例如

async.waterfall([
  function firstStep(done) {},
  function secondStep(previousResult, done) {}
],
function (err) {});