1
meteor apolloスターターキットhttps://github.com/apollostack/meteor-starter-kit を使用して開始し、コレクション「投稿」を作成してUIにデータを取り込めます。しかし、mongoコンソールからコレクションを更新すると、自動的にUIが更新されていません...いくつかの設定が欠落していますか?誰でも私をここで助けることができますか?ここでMeteor Apollo Mongoコンソールからコレクションを更新するときにUIを更新しない
は、コードは次のとおりです。
スキーマとリゾルバ:
import {Random} from 'meteor/random';
const Posts = new Mongo.Collection('posts');
export const typeDefs = [`
type Post {
_id: String
title: String
}
type Query {
myPosts: [Post]
}
schema{
query: Query
}
`];
export const resolvers = {
Query: {
myPosts(root, args) {
return Posts.find().fetch();
}
},
Post: {
title: ({title}) => title
}
};
アプリケーションコンポーネント:
import React, {Component} from 'react';
import {graphql} from 'react-apollo';
import {Meteor} from 'meteor/meteor';
import {createContainer} from 'meteor/react-meteor-data';
import gql from 'graphql-tag';
const App = ({userId, loading, error, myPosts, refetch}) => {
return (
<div>{userId}
<button onClick={() => refetch()}>Refetch!</button>
{myPosts && myPosts.map((post, index) => {
return (
<div key={index}>{post.title}</div>
);
})}
</div>
);
};
App.propType = {
userId: React.PropTypes.string.isRequired,
posts: React.PropTypes.Object,
refetch: React.PropTypes.func
};
const GET_USER_DATA = gql `
{
myPosts{
title
}
}
`;
const withData = graphql(GET_USER_DATA, {
props: ({data}) => {
console.log(data);
const {loading, error, myPosts, variables, refetch} = data;
if (loading)
return {loading};
if (error)
return {error};
return {myPosts, refetch};
},
options: (ownProps) => ({
variables: {
id: "myownvariable"
}
})
});
const AppWithData = withData(App);
const AppWithUserId = createContainer(() => {
return {userId: "sampleuserid"};
}, AppWithData);
export default AppWithUserId;
クライアント/ main.js
import {Meteor} from 'meteor/meteor';
import {render} from 'react-dom';
import React from 'react';
import ApolloClient from 'apollo-client';
import {meteorClientConfig} from 'meteor/apollo';
import {ApolloProvider} from 'react-apollo';
import App from '/imports/ui/App';
const client = new ApolloClient(meteorClientConfig());
Meteor.startup(() => {
render(
<ApolloProvider client={client}>
<App/>
</ApolloProvider>, document.getElementById('app'));
});
サーバ/メイン。 js
import {createApolloServer} from 'meteor/apollo';
import {makeExecutableSchema, addMockFunctionsToSchema} from 'graphql-tools';
import {typeDefs, resolvers} from '/imports/api/schema';
const schema = makeExecutableSchema({typeDefs, resolvers});
createApolloServer({schema});
感謝を。リンクhttp://dev.apollodata.com/react/receiving-updates.htmlは私の問題を解決するのを助けました。私のケースでは –
でポーリングは正常に機能しましたが、サブスクリプションの使用方法を理解できませんでした。流星アポロの実例はありますか?助けが大変ありがとう! –
私はそれをやっていませんが、これらの関数の引数で必要なものをすべて設定できるはずです:http://dev.apollodata.com/core/meteor.html#API – Loren