javascript - GraphQL 不允许查询不同的字段
问题描述
我是 GraphQL 的绝对初学者。如果问题是业余的,请道歉。我正在编写这个 graphQL 端点,它将按姓名过滤人员。效果很好,但我希望能够
按姓名、年龄、电话号码等多个参数过滤
或者
使用参数的组合来搜索..
我目前的程序:
var express = require("express");
var express_graphql = require("express-graphql");
var { buildSchema } = require("graphql");
var Sequelize = require("sequelize")
var db = new Sequelize(
"users",
"root",
"pass",
{
host: "localhost",
dialect: "mysql"
}
);
var calls = db.define(
"calls",
{
person_id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true
},
name: {
type: Sequelize.STRING,
allowNull: false
},
age: {
type: Sequelize.INTEGER,
allowNull: false
},
address: {
type: Sequelize.STRING,
allowNull: false
},
company: {
type: Sequelize.String,
allowNull: false
},
email: {
type: Sequelize.STRING,
allowNull: false
}
},
{
tableName: "person"
}
);
// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
type Query {
Person(person_id: Integer!): [Person]
}
type Person {
person_id: Integer
name: String
age: Integer
address: String
company: String
email: String
}
`);
var getperson = function(args) {
if (args.person_id) {
var p_name = args.person_id;
return calls.findAll({
where: {
name: p_name
}
});
}
};
// The root provides a resolver function for each API endpoint
var root = {
person: getperson
};
var app = express();
app.use(
"/graphql",
express_graphql({
schema: schema,
rootValue: root,
graphiql: true
})
);
app.listen(4000);
console.log("Running a GraphQL API server at http://localhost:4000/graphql");
尝试这样做:
type Query {
Person(person_id: Integer!): [Person]
Person(name: String!): [Person]
}
但它说 Person 只能定义一次。
解决方案
您不能“重载”字段定义。您可以使用可为空的参数定义单个字段
person(personId: Int, name: String)
或创建不同名称的字段
personById(id: Int!)
personByName(name: String!)
推荐阅读
- python - 局部变量可能在赋值之前被引用
- c - 如何在调试模式下在 NetBeans 中获取 printf 消息并且构建目标是 RaspberryPi?
- python - 使用 pubsub 消息启动其他 GCF 的 Google 云功能以“状态:连接错误”结尾
- html - 如何在 JQuery 中将变量从一个函数传递到另一个函数
- elasticsearch - Grafana 和 Elasticsearch:如何执行简单查询
- azure - Azure API 管理不验证负载中的必需属性
- selenium - 需要从 Web 表中选择行
- python - 无法以所需的 DateTime 格式转换时间
- swift - 如何初始化可选数组?
- python - Tkinter 按钮搞砸了一切