[英]GraphQL query returns error "Cannot return null for non-nullable field"
我有一個基本的 GraphQL 查詢設置,如下所示:
查詢.js:
const Query = {
dogs(parent, args, ctx, info) {
return [{ name: 'Snickers' }, { name: 'Sunny' }];
},
};
module.exports = Query;
schema.graphql:
type Dog {
name: String!
}
type Query {
dogs: [Dog]!
}
我創建了一個函數createServer()
來啟動服務器,如下所示:
const { GraphQLServer } = require('graphql-yoga');
const Mutation = require('./resolvers/Mutation');
const Query = require('./resolvers/Query');
const db = require('./db');
function createServer() {
return new GraphQLServer({
typeDefs: 'src/schema.graphql',
resolvers: {
Mutation,
Query,
},
resolverValidationOptions: {
requireResolversForResolveType: false,
},
context: req => ({ ...req, db }),
});
}
module.exports = createServer;
然后我嘗試按如下方式查詢dogs
:
query {
dogs {
name
}
}
但是,我沒有從狗的數組中獲取名稱,而是收到以下錯誤:
{
"data": null,
"errors": [
{
"message": "Cannot return null for non-nullable field Query.dogs.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"dogs"
]
}
]
}
似乎是什么導致了這個錯誤?
上面的代碼可以在codesandbox中看到: https ://codesandbox.io/s/olzj9vvpk5
但是,當我將 Query 轉換為類似{}
它會返回相同的錯誤,因此請檢查您的路徑和 console.log Query 以驗證路徑。 您的導出看起來正確,但您可能忘記保存文件,正如我從課程入門文件中看到的那樣 Query is an {}
。 請仔細檢查。
此外,如果此代碼位於公共 git 存儲庫中,請分享鏈接。
我知道這個問題已經得到回答,但對我來說,解決這個問題的唯一方法是同時傳遞 info 參數。
就我而言,我在 src 文件夾中創建了一個新的 Query.js 文件,但我使用 Query = require('./resolvers/Query') 導入 Query 並在那里編碼。 所以,嘗試檢查路徑,我認為問題出在那里。
此問題來自 AWS 要求 dynamoDB 表中的某些標准值,例如 createdAt 和 updatedAd,只需在 dynamo db 中手動添加帶有時間戳的這些字段以進行進一步測試。 總是需要通過 id 請求突變,當我的架構是由放大代碼生成創建時,這對我來說並不清楚......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.