【发布时间】:2023-04-08 03:02:01
【问题描述】:
当我在 graphqli 中输入随机数时,我在 api 日志中看到 message: 'Cast to ObjectId failed for value "58d" at path "_id" for,以下代码创建查询并与我的 API 交互。
所以我知道它使用 node-fetch 访问 API,但不知道为什么它没有返回我的名字。我正在使用:
{
language(id:"58d80f843ad415941d8f908b"){
name
}
}
我已经用 mongoose 和 NodeJS 构建了我的 API。有人可以帮忙吗:(
var fetch = require('node-fetch');
var { GraphQLSchema } = require('graphql');
var { GraphQLObjectType } = require('graphql');
var { GraphQLString } = require('graphql');
var BASE_URL = "http://localhost:3030";
function getLanguageByURL(relativeURL){
return fetch(`${BASE_URL}${relativeURL}`)
.then(res => res.json())
.then(json => json.language)
}
var LanguageType = new GraphQLObjectType({
name: 'Language',
description: '...',
fields: () => ({
name: {type: GraphQLString},
}),
});
var QueryType = new GraphQLObjectType({
name: 'Query',
description: '...',
fields: () => ({
language: {
type: LanguageType,
args: {
id: {type: GraphQLString},
},
resolve: (root, args) =>
getLanguageByURL(`/languages/${args.id}`)
}
}),
});
module.exports.schema = new GraphQLSchema({
query: QueryType,
});
【问题讨论】:
-
您提供的
id不是有效的mongodbObjectId,并更新解析器,我猜您将id按值传递给_id,所以它抛出了一个error。 !在 Q 中添加解析器!
标签: javascript json node.js api graphql