mongodb - 将用户输入传递给 GQL 查询
问题描述
我目前正试图弄清楚如何通过使用用户通过表单提交的文本数据作为返回结果数组的查询中的变量参数来实现搜索功能。AssetQueryInit 查询的结果很好。(AssetQueryInit 只是呈现硬编码查询的结果)
我是新手,任何帮助将不胜感激!
GraphQL 服务器
const typeDefs = `
type Asset {
_id: ID
assetName: String
headline: String
language: String
sentimentNegative: Float
sentimentNeutral: Float
sentimentPositive: Float
firstCreated: String
}
type Query {
asset(assetName: String!): Asset
assetAll(assetName: String!): [Asset]
}
`;
const resolvers = {
Query: {
asset: (_,{assetName})=> Asset.findOne({assetName : assetName }),
assetAll: (_,{assetName}) => Asset.find({assetName: assetName})
}
};
const server = new GraphQLServer({ typeDefs, resolvers });
反应
const AssetAllQuery = gql`
{
assetAll(assetName: $text){
_id
assetName
headline
firstCreated
sentimentNegative
sentimentPositive
sentimentNeutral
}
}
`;
class App extends Component {
assetAll = async (text) =>{
await this.props.assetAll({
variables:{
assetName: text
},
update:(store,{data: {assetAll}}) => {
const data = store.readQuery({query: AssetAllQuery});
data.assetAll.unshift(assetAll);
}
});
};
render() {
const {
data : { loading, assetAll }
} = this.props;
console.log("test");
if(loading){
return null;
}
return (
<div className="App">
<Form submit ={this.getAllAssets}/>
{assetAll.map(Asset => <div key={Asset._id}>{Asset.headline} | {Asset.sentimentNeutral > Asset.sentimentPositive ? (Asset.sentimentNeutral > Asset.sentimentNegative ? "Neutral" : "Sell") : "Buy"} </div>)}
</div>
);
}
};
export default compose(
graphql(AssetAllQuery, {name: "assetAll"}),
graphql(AssetQueryInit)
)(App);
输出
[GraphQL error]: Message: Variable "$text" is not defined., Location: [object Object],[object Object], Path: undefined bundle.js:837:32
[Network error]: Error: Response not successful: Received status code 400
解决方案
在查询中,$variables
您使用的任何内容本质上都必须“声明”为整个事物的输入参数:
const AssetAllQuery = gql`
AssetAll($assetName: String!) {
assetAll(assetName: $assetName){
...
}
}
`;
顶级操作名称并不重要;有$variable
自己声明的类型,并且必须匹配查询主体中使用的类型;当您进行查询时,variables:
那里的名称必须与声明的查询参数的名称相匹配。
推荐阅读
- android - 强制 Dagger 2 创建注入字段的实例
- dm-script - 用一堆 dm3 文件制作电影
- ruby-on-rails - 在生产中运行时设计密钥错误
- haskell - 不能在 where 块中使用“<-”吗?
- java - 通过泛型在java中制作泛型接口
- amazon-web-services - AWS Quicksight 计划报告交付
- algorithm - 为什么这种等式在 Floyd-Warshall 算法中成立?
- javascript - 如何将目标值从网站动态发送到谷歌分析
- sublimetext3 - 自动换行如何在 SublimeText 中工作?
- javascript - 循环遍历数组数组