2017-08-11 3 views
1

私はSequelizeでGraphQLを使用していますが、私はnullを返す突然変異を持っています。GraphiQLはnil突然変異を返します

私は、変異のリゾルバを別の方法で変更しようとしましたが、GraphiQLでテストすると常にnullを返します。

相続人は、いくつかの異なる方法で記述されたリゾルバ:

1 - は当初、私は約束してラップに機能を追加するためのアイデアを持っていました。

resolve(root, args) { 
     return new Promise((resolve, reject) => { 
      db.record.findOne({ where: { UID: args.UID } }) 
       .then(record => { 
        let newArr = undefined 
        if (record.watched == null) { 
         newArr = [args.value] 
        } else { 
         let old = record.watched 
         newArr = old.concat([args.value]) 
        } 
        db.record.update({ watched: newArr }, { where: { UID: args.UID } }) 
         .then(record => { 
          resolve(record) 
         }) 
       }) 
     }) 
    } 

2 - ここで私は約束を返します。

resolve(root, args) { 
     db.record.findOne({ where: { UID: args.UID } }) 
      .then(record => { 
       let newArr = undefined 
       if (record.watched == null) { 
        newArr = [args.value] 
       } else { 
        let old = record.watched 
        newArr = old.concat([args.value]) 
       } 
       return db.record.update({ watched: newArr }, { where: { UID: args.UID } }) 
      }) 
    } 

3 - 私はすぐにレコードを直接返しました。

resolve(root, args) { 
     db.record.findOne({ where: { UID: args.UID } }) 
      .then(record => { 
       let newArr = undefined 
       if (record.watched == null) { 
        newArr = [args.value] 
       } else { 
        let old = record.watched 
        newArr = old.concat([args.value]) 
       } 
       db.record.update({ watched: newArr }, { where: { UID: args.UID } }) 
        .then(record => { 
         return record 
        }) 
      }) 
    } 
+0

いずれの場合でもデータベースが更新されますか?それとも予想通りに起こっていないのでしょうか? –

+0

データベースが更新されます –

答えて

0

問題は、リゾルバから何も返されず、約束を正しく使用していないことです。試してみてください:

resolve(root, args) { 
    return db.record.findOne({ where: { UID: args.UID } }) 
     .then(record => { 
      let newArr = undefined 
      if (record.watched == null) { 
       newArr = [args.value] 
      } else { 
       let old = record.watched 
       newArr = old.concat([args.value]) 
      } 
      return db.record.update({ watched: newArr }, { where: { UID: args.UID } }); 
     }); 
} 
+0

それは私のために働いていません。 –

+0

まだnullが返されていますか、他にエラーがありますか?何が起こっているのかを見るために、コードのさまざまな段階でconsole.logsを削除しようとしましたか? – jmcneese

+0

それはただnullを返すだけです、私はコンソールのロギングが私の次のアプローチになると思います。それでもgrapqlを頭に入れようとすると、私の解決法は、私の中に一つの行があり、一つの行が約束を返すだけで、もっと複雑なものは何も返されません。 –

関連する問題