2017-08-11 46 views
1

我正在使用GraphQL和Sequelize,並且我有一個返回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,我的解決方案似乎只有在我有一條線,並且一行返回一個承諾,任何更復雜的返回null。 –