GraphQL Resolver для отношений - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы написать мутацию, которая при создании трекера вводит идентификатор модели трекера и идентификатор пользователя для соответствующей модели трекера и пользователя.Мой вопрос связан с оператором return в функции Resolve: как я могу выполнять обе функции непосредственно друг за другом, чтобы они записывались в обеих коллекциях?

Вот моя мутация.Как написано в настоящее время, выполняется только вторая переменная, в этом случае только «tm».

createTracker: {
      type: TrackerType,
      args: {
        trackerModelID: {type: GraphQLID },
        userId: {type: GraphQLID },
        access_token: {type: GraphQLString },
      },
      resolve(parent, args){
        let tracker = new Tracker({
          trackerModelID: args.trackerModelID,
          userId: args.userId,
          access_token: args.access_token,
        });
        tracker.save();
        let tm = TrackerModel.updateOne({ _id: args.trackerModelID }, { $push: { trackerIds: tracker._id } });
        let us = User.updateOne({ _id: args.userId }, { $push: { trackerIds: tracker._id } });
        return us && tm
      },
    },

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Спасибо, я пробовал все эти способы, но это не сработало.

Но теперь я сам нашел ответ, это работает:

tracker.save();
return User.updateOne({ _id: args.userId }, { $push: { trackerIds: tracker._id } }).then(() =>{
 return TrackerModel.updateOne({ _id: args.trackerModelID }, { $push: { trackerIds: tracker._id } });
 }
)
0 голосов
/ 17 декабря 2018

попробуйте;

1) удалить return us && tm

2) объявить массив: var results = [us , tm];

3) вернуть массив: return results

...