我目前有一个AppSync架构,在其中我在AppSync控制台内创建了一个单独的查询,以保留某些参数(assetId)并在DynamoDB表中获取结果列表。我已经在AppSync控制台中测试了该查询,它运行良好,现在我在React应用程序中使用Amplify来调用该查询时遇到了麻烦。运行我的应用程序时出现以下错误:
DisplayCard.js:34 Uncaught (in promise) {data: null, errors: Array(1)}
"Validation error of type FieldUndefined: Field 'getAssetIdRating' in type 'Query' is undefined @ 'getAssetIdRating'"
我尝试按照Amplify网站(https://aws-amplify.github.io/docs/js/api)的说明进行操作,但仍收到此错误。
供参考,这是我在AppSync控制台中运行查询时的查询:(返回所需结果)
query getAssetIdRating {
getRatingsAssetId(assetId:"949142fb-91d2-41bd-8c04-1d42ed8166c9") {
items {
id
assetId
rating
}
}
}
我用于此查询的解析器如下:(我创建了一个单独的索引)
{
"version" : "2017-02-28",
"operation" : "Query",
"index": "assetId-index",
"query" : {
## Provide a query expression. **
"expression": "assetId = :assetId",
"expressionValues" : {
":assetId" : $util.dynamodb.toDynamoDBJson($ctx.args.assetId)
}
}
}
现在进入我的React代码,这是我正在react中使用的当前查询,位于src / graphql / queries下。
export const getAssetIdRating = /* GraphQL */ `
query getRatingAssetId($assetId: ID) {
getAssetIdRating(assetId: $assetId) {
items {
id
assetId
rating
}
}
}
`;
然后当我在React应用程序中调用它时:
componentDidMount = async () => {
this.getRatings();
}
getRatings = async () => {
let { assetIdRatings } = this.state;
const result = await API.graphql(graphqlOperation(queries.getAssetIdRating, {assetId: '949142fb-91d2-41bd-8c04-1d42ed8166c9'}));
console.log(result);
}
请注意,当我调用listRatings查询时,它工作正常,只是不适用于此查询。另外,我稍后通过AppSync控制台手动添加了此查询,我不认为这会引起问题吗?
无论哪种方式,任何帮助都将不胜感激!如果需要,我可以上传更多必要的代码!感谢您的帮助!
抱歉,您可以忽略此问题,这是一个简单的键入错误:P您在深夜时会错过它!
您可以在我的查询中看到键入错误:
getRatingsAssetId(assetId:"949142fb-91d2-41bd-8c04-1d42ed8166c9") {
getAssetIdRating(assetId: $assetId) {
感谢您的帮助!