首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Ember-Apollo连接到Graphql服务器?

如何使用Ember-Apollo连接到Graphql服务器?
EN

Stack Overflow用户
提问于 2020-10-13 21:05:32
回答 1查看 79关注 0票数 0

我正在使用一个基于GraqlQL的全栈应用程序。服务器工作得很好,现在我需要在客户端尝试第一个查询和突变。由于某些原因,“监视”路由以及它后面的所有内容都没有显示出来。下面我将显示我编辑或创建的文件。

items.graphql:

代码语言:javascript
复制
query {
  items {
    _id
    name
  }
}

environment.js:

代码语言:javascript
复制
'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 (路由):

代码语言:javascript
复制
import Route from '@ember/routing/route';
import { queryManager } from 'ember-apollo-client';
import query from 'client/gql/items.graphql';

export default Route.extend({
  apollo: queryManager(),

  model() {
    return this.apollo.watchQuery({ query }, 'items');
  }
});

monitoring.hbs:

代码语言:javascript
复制
<h3>Monitoring</h3>

<div>
  {{#each model as |item|}}
    <h3>{{item.name}}</h3>
  {{/each}}
</div>

{{outlet}}

感谢您的关注!

我看到了这个错误:

代码语言:javascript
复制
Uncaught (in promise) Error: fetch is not defined - maybe your browser targets are not covering everything you need?
EN

回答 1

Stack Overflow用户

发布于 2020-10-14 00:20:21

解决方案是修复两件事。首先,将其放在ember-cli-build.js中:

代码语言:javascript
复制
'ember-fetch': {
  preferNative: true
}

并修复路由文件:

代码语言:javascript
复制
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);
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64335909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档