小编JCM*_*JCM的帖子

Relay.js中的查看器

你为什么需要以及如何viewer在Relay.js中正确使用?

我花了一周时间尝试了解Relay.js.我现在对GraphQL很好,我理解得很好但是我在同一个应用程序中将GraphQL和Relay.js联合起来有些问题.

第一步可能是理解viewer.我已经看过许多使用它的示例和教程,但它从未被解释过,而且它的确切内容和用途是什么并不十分清楚.

中继文档提到了viewer几次,但是甚至没有一个单词解释它.

我希望我能为这个问题做点什么,但我担心网上没有解释.它只在代码中使用,并且脱离上下文没有任何意义.无论如何,回答这个问题需要一些关于Realy.js/GraphQL的知识.

根据我研究的无数例子,我最好的猜测是它与用户有某种关系?如果用户是匿名或登录?根据登录状态或用户级别授予对数据的不同访问权限?

graphql relayjs

12
推荐指数
1
解决办法
1339
查看次数

是否可以使用Graphql生成的模式作为流定义?

我有一个使用convo GraphQL,RelayFlow的项目.有没有办法使用GraphQL模式来提供Flow,这样可以输入React props而无需重新声明类型?

对于Relay,我已经在使用生成两个文件的脚本了:schema.jsonschema.graphql.Babel插件用于schema.json将查询转换为javascript.

另一个文件schema.graphql看起来类似于类型的Flow语法定义,但也有差异.我已经尝试了一次,import type {Definition} from "./schema.graphql"但却默默地失败了.

javascript reactjs flowtype graphql relayjs

11
推荐指数
1
解决办法
1652
查看次数

中继:如何在嵌套路由中合并而不是覆盖查询?

我无法导航到/users我的应用程序中,因为它不会触发我想到它应该获取的所有查询.

我的应用程序包含一个App组件和一些包含实际内容的组件,如DashboardUserList.还有一个,EnsureAuthenticationContainer但这只是一个组件,当用户通过身份验证时,只需呈现它的子项.这是我的路线设置:

const ViewerQueries = {
    viewer: () => Relay.QL`query { viewer }`
};
Run Code Online (Sandbox Code Playgroud)

[...]

<Router history={browserHistory} render={applyRouterMiddleware(useRelay.default)} environment={Relay.Store}>
    <Route path="/" component={App} queries={ViewerQueries}>
        <Route path="login" component={Login} />
        <Route component={EnsureAuthenticationContainer}>
            <IndexRoute component={Dashboard} />
            <Route path="users" component={UserList} queries={ViewerQueries} />
            <many more routes />
        </Route>
    </Route>
</Router>
Run Code Online (Sandbox Code Playgroud)

问题是,这两个AppUserList定义fragements,似乎只有的查询UserList被发送.

片段App:

fragments: {
    viewer: () => {
        return Relay.QL`
            fragment on ViewerType {
                loggedInUser {
                    id
                } …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router relayjs react-router-relay

11
推荐指数
1
解决办法
389
查看次数

使用Doctrine获取随机记录

我想知道如何从一个集团中随机抽取一些成员,但我不知道最好的方法是什么,我认为ORDER BY RAND()不是最好的选择,因为一个集团可以有超过100,000个成员,执行此类型查询可能会很慢.

我发现这种方式使用SQL,但我不知道如何在DQL中做同样的事情:我如何优化MySQL的ORDER BY RAND()函数?

php random dql doctrine-orm

10
推荐指数
2
解决办法
1万
查看次数

Nginx/php-fpm umask设置

当我使用apache2服务器时,umask在/ etc/apache2/envvars中设置默认值以0002用于解决我的所有权限问题.现在我正在尝试设置nginx/php-fpm,当使用不正确的权限创建文件时,我遇到了同样的问题.

umask在nginx或php-fpm中有设置吗?

php permissions ubuntu nginx

10
推荐指数
3
解决办法
1万
查看次数

如何为自引用数据层次结构创建graphql架构?

这不起作用,因为类型在路径字段定义中引用其自身:

  var routeType = new GraphQLObjectType({
  name: 'MessageRoute',
  fields: {
    name: {
      type: GraphQLString
    },
    routes: {
      type: new GraphQLList(routeType),
      resolve: (route) => {
        return route.routes;
      }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

那怎么办呢?

graphql relayjs

10
推荐指数
1
解决办法
2542
查看次数

React Relay错误'对象无法找到方法'

我一直在和reactjs合作,并且认为我开始玩graphql和relay.我遇到了一个我无法触及的错误,所以我想知道这里是否有人遇到过同样的错误.任何指针或想法都会受到欢迎.

我得到的错误是

Error: GraphQL validation/transform error ``Object  has no method 'find'`` in file `/Users/chris/Documents/App/site/js/main.js`.
Run Code Online (Sandbox Code Playgroud)

所以我有一个GraphQL服务器正在运行,一切正常我可以查询后端数据库(我正在使用mongodb),以下查询通过graphql ui生成正确的结果

{
  store{
    items{
        _id
        title
        sub
    }
  }
}

produces the following output which is correct

{
  "data": {
    "store": {
      "items": [
        {
          "_id": "56e2c71d150040c491c73b26",
          "title": "Test Item One",
          "sub": "sub title here"
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以我认为可以安全地假设graphql服务器很好,问题必须是我的relay或babelRelayPlugin.js的实现

以下是main.js文件,其中简化了render方法.

import React from 'react';
import Relay from 'react-relay';


class Main extends React.Component {

    render(){
        return (
            <div>
                <p>Test</p>
            </div>
        );
    }
}

Main …
Run Code Online (Sandbox Code Playgroud)

reactjs graphql relayjs

10
推荐指数
1
解决办法
407
查看次数

RelayContainer:预期的'%s`提供给`%s`,但'+'得到`undefined`.如果这是故意的,则传递一个明确的`null`

我尝试使用React,Relay和GraphQL来实现一些东西,但我遇到了一个我不明白的问题以及我无法找到解决方案的地方.

首先,我创建了一个RootQuery并拥有一个Component,它运行良好.现在我创建了一个带有自己片段的子组件,我得到了这个错误:

relay.js:1799警告:RelayContainer:道具预计room将提供给RoomList,但得到undefined.null如果这是故意的,请明确传递.

在Networkrequest中,我看到了所有请求的数据.

这是一些代码:

根查询

const RoomQuery = {
    room: (Component) => Relay.QL`
      query {
        room {
            ${Component.getFragment('room')},
        }
      }
    `
};
Run Code Online (Sandbox Code Playgroud)

路线

<Route name="rooms" path="/rooms" component={Rooms} onEnter={requireAuth} queries={RoomQuery}/>
Run Code Online (Sandbox Code Playgroud)

继电器容器

export default Relay.createContainer(Rooms, {
fragments: {
    room: () => Relay.QL`
    fragment on Room {
        title,
        description,
        publicKeys,
        takenKeys,
        image_filename,
        subRoomsCount,
        owner {
            fullName
        },
        ${RoomList.getFragment('room')},
    }
`,
}
});
Run Code Online (Sandbox Code Playgroud)

中继子容器

export default Relay.createContainer(RoomList, {
fragments: {
    room: () => Relay.QL`
    fragment …
Run Code Online (Sandbox Code Playgroud)

reactjs graphql relayjs

10
推荐指数
1
解决办法
2183
查看次数

使用Relay创建React App的最简单方法是什么?

我想在create-react-app不弹出我的中继应用程序的情况下使用.

根据Relay文档,我将需要babel-relay-plugin.将relay-starter-kit在配置此.babelrc.

最简单的方法是什么?有没有一种方法可以在relay不弹出的情况下启用?

reactjs graphql relayjs create-react-app

10
推荐指数
1
解决办法
2762
查看次数

React Warning:数组或迭代器中的每个子节点都应该有一个唯一的"key"prop.检查`App`的渲染方法

我收到了这个错误,但我正在定义一个密钥.这是我App.js的抱怨.

import React from 'react';
import Relay from 'react-relay';
import AccountTable from './AccountTable';

class App extends React.Component {
  render() {
    return (
      <div>
        <h1>Account list</h1>
          {this.props.viewer.accounts.edges.map(edge =>
            <AccountTable key={edge.node.id} account={edge.node} />
          )}
      </div>
    );
  }
}

export default Relay.createContainer(App, {
    fragments: {
        viewer: () => Relay.QL`
            fragment on User {
                accounts(first: 10) {
                    edges {
                        node {
                            ${AccountTable.getFragment('account')}
                        }
                    }
                }
            }
        `,
    },
});
Run Code Online (Sandbox Code Playgroud)

ecmascript-6 reactjs relayjs

10
推荐指数
1
解决办法
1万
查看次数