Javascript 如何使用Ember Apollo连接到Graphql服务器?
我正在使用一个基于GraqlQL的全堆栈应用程序。服务器工作正常,现在我需要在客户端尝试第一次查询和转换。由于某些原因,“监控”路线以及其后的所有内容都不会显示。下面我将显示我编辑或创建的文件 items.graphql:Javascript 如何使用Ember Apollo连接到Graphql服务器?,javascript,ember.js,graphql,apollo,ember-cli,Javascript,Ember.js,Graphql,Apollo,Ember Cli,我正在使用一个基于GraqlQL的全堆栈应用程序。服务器工作正常,现在我需要在客户端尝试第一次查询和转换。由于某些原因,“监控”路线以及其后的所有内容都不会显示。下面我将显示我编辑或创建的文件 items.graphql: query { items { _id name } } environment.js: 'use strict'; module.exports = function(environment) { let ENV = { apollo
query {
items {
_id
name
}
}
environment.js:
'use strict';
module.exports = function(environment) {
let ENV = {
apollo: {
apiURL: 'http://localhost:5000/graphql'
},
modulePrefix: 'client',
environment,
rootURL: '/',
locationType: 'auto',
EmberENV: {
FEATURES: {
//
},
EXTEND_PROTOTYPES: {
Date: false
}
},
APP: {
//
}
};
if (environment === 'development') {
//
}
if (environment === 'test') {
ENV.locationType = 'none';
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV.APP.rootElement = '#ember-testing';
ENV.APP.autoboot = false;
}
if (environment === 'production') {
//
}
return ENV;
};
monitoring.js(路由):
监测.hbs:
<h3>Monitoring</h3>
<div>
{{#each model as |item|}}
<h3>{{item.name}}</h3>
{{/each}}
</div>
{{outlet}}
解决办法是解决两件事。 首先是将其放在ember-cli-build.js中:
'ember-fetch': {
preferNative: true
}
并修复路由文件:
import Route from '@ember/routing/route';
import { queryManager } from 'ember-apollo-client';
import query from 'client/gql/queries/items.graphql';
export default Route.extend({
apollo: queryManager(),
async model() {
let queryResults = await this.apollo.watchQuery({ query }, 'items');
return Object.values(queryResults);
}
});
我不熟悉graphql的这个变体,但是“模型”的类型是什么?它是数组还是对象?如果您添加{{log model}},它将打印到控制台。即使在我在模板中对该块进行了注释后,它仍然不工作。什么不工作?你记录了吗?您可以共享输出吗?model(){//let variables={id:params.id};console.log(model.toJSON());返回this.apollo.watchQuery({query},'items');}//not help我的意思是登录模板以查看您的模型挂钩返回的内容。保持路线不变:)
'ember-fetch': {
preferNative: true
}
import Route from '@ember/routing/route';
import { queryManager } from 'ember-apollo-client';
import query from 'client/gql/queries/items.graphql';
export default Route.extend({
apollo: queryManager(),
async model() {
let queryResults = await this.apollo.watchQuery({ query }, 'items');
return Object.values(queryResults);
}
});