вставить данные в несколько таблиц mysql с помощью graphql nodejs - PullRequest
0 голосов
/ 13 декабря 2018

Я создаю приложение nodeJs с GraphQl, я хочу, чтобы когда пользователь отправлял данные на сервер, он вставлял некоторые данные в таблицу пользователей, а затем получал последний вставленный идентификатор и использовал его для вставки остальных данных в компании.Таблица в базе данных MySQL, использую GraphQl

, например, когда пользователь отправляет следующие данные, такие как (имя пользователя, адрес электронной почты, companyName, companyType), он вставляет имя пользователя, адрес электронной почты в таблицу пользователя и затем получаетидентификатор этого пользователя и вставьте его в 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 голосов
/ 13 декабря 2018

Оформить заказ на асинхронный модуль для nodejs.У этого есть метод водопада.Вы можете выполнять шаги последовательно с водопадом, и хорошо, что он позволяет вам передавать результаты на следующий шаг от предыдущего шага.Это то, что решит вашу проблему.например,

async.waterfall([
  function firstStep(done) {},
  function secondStep(previousResult, done) {}
],
function (err) {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...