Мутация Graphql, возвращающая ноль, но база данных обновлена - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь добавить мутацию, чтобы позволить клиенту добавить документ в схему LineItem.Код, который я написал ниже, позволяет мне это делать, когда я тестирую его с помощью GraphiQL, но получаемый ответ - ноль.Как исправить код так, чтобы ответом был новый документ?

addLineItem: {
    type: LineItemType,
    args: {
      orderId: {type: new GraphQLNonNull(GraphQLID)},
      productId: {type: new GraphQLNonNull(GraphQLID)},
      quantity: {type: new GraphQLNonNull(GraphQLInt)}
    },
    resolve(parent, args) {
      Product.findById(args.productId, (err, result) => {
        let price = result.price;
        let subtotal = price*args.quantity;
        let lineitem = new LineItem({
          orderId : args.orderId,
          productId : args.productId,
          quantity : args.quantity,
          subtotal: subtotal
        });
        return lineitem.save();
    }}
  }
},

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Проблема заключается в том, что вы не возвращаете никакого значения в функции resolve, lineitem.save(); возвращает значение внутри callBack

делает функцию разрешения async, удаляет findById callBackи дождитесь результата, затем реализуйте свою логику и верните значение, как показано ниже:

async resolve(parent, args) {
  const result = await Product.findById(args.productId);

  let price = result.price;
  let subtotal = price*args.quantity;
  let lineitem = new LineItem({
    orderId : args.orderId,
    productId : args.productId,
    quantity : args.quantity,
    subtotal: subtotal
  });

  return lineitem.save();
}
0 голосов
/ 17 сентября 2018

На самом деле в вашем коде нет ничего плохого. ,

Вам необходимо указать возвращаемое значение в виде типа (e.g. Boolean, String, etc). Типы могут быть обнуляемыми, например: значение может быть нулевым, и, по сути, они обнуляются по умолчанию , если вы не определите их с помощью!

так что с нулевым возвращаемым значением все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...