2017-08-31 7 views
0

私はこのトピックについて議論している多くの質問があることを知っているが、それらのすべてが私は空の配列を返してみました。私は試しました:メテオ - 最新のドキュメントを取得

  • 新しい出版物を作成します。
  • forループを使用して最後の項目を取得します(高速ではありません)
  • クライアント側でdbを調べます。ここで

私の出版物である:私はそれにアクセスしようとしているのはここ

Meteor.publish('notes-newest', function() { 
    return Notes.find().sort({$natural: -1}).limit(10); 
}); 

は次のとおりです。

import { Meteor } from "meteor/meteor"; 
import React from "react"; 
import { withRouter } from "react-router-dom"; 
import { Tracker } from "meteor/tracker"; 
import { Accounts } from "meteor/accounts-base"; 

import { Notes } from "../methods/methods"; 
import SubjectRoutes from "./subjectRoutes/subjectRoutes"; 
import RenderNotesBySubject from "./renderNotesBySubject"; 
import Menu from "./Menu.js"; 

class Home extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.state = { 
     notes: [] 
    }; 
    } 
    componentDidMount() { 
    Meteor.subscribe('notes-newest') 
    this.tracker = Tracker.autorun(() => { 
     const notes = Notes.find().fetch() 
     if(notes == null || notes == undefined){ 
     return; 
     } 
     this.setState({ notes }) 
    }) 
    } 
    renderNewNotes(){ 
    let notes = this.state.notes; 
    let count = 10; 
    console.log(notes); 
    } 
    render(){ 
    return (
     <div> 
     <Menu /> 
     <h1></h1> 
     {this.renderNewNotes()} 
     </div> 
    ) 
    } 
} 

export default withRouter(Home); 

新しいコード

import { Meteor } from "meteor/meteor"; 
import React from "react"; 
import { withRouter } from "react-router-dom"; 
import { Tracker } from "meteor/tracker"; 
import { Accounts } from "meteor/accounts-base"; 
import { createContainer } from "meteor/react-meteor-data" 

import { Notes } from "../methods/methods"; 
import SubjectRoutes from "./subjectRoutes/subjectRoutes"; 
import RenderNotesBySubject from "./renderNotesBySubject"; 
import Menu from "./Menu.js"; 

class Home extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.state = { 
     notes: [] 
    }; 
    } 
    componentDidMount() { 
    // Meteor.subscribe('notes-newest') 
    this.tracker = Tracker.autorun(() => { 
     const notes = this.props.list 
     if(notes == null || notes == undefined){ 
     return; 
     } 
     this.setState({ notes }) 
    }) 
    } 
    renderNewNotes(){ 
    let notes = this.state.notes; 
    let count = 10; 
    console.log(notes); 
    } 
    render(){ 
    return (
     <div> 
     <Menu /> 
     <h1></h1> 
     {this.renderNewNotes()} 
     </div> 
    ) 
    } 
} 

export default createContainer(({props})=>{ 
    Meteor.subscribe("notes-newest", props); 
    return{ 
    list: Notes.find().fetch(), 
    } 
}, Home); 

答えて

0

あなたpublicationがいるようです大丈夫。必要なのは、データコンテナを使用することだけです。 meteotで反応性データを読み込むためにreact-meteor-dataを使用することをお勧めします。

上位クラスを作成してデータをラップし、既存のコンポーネントをプレゼンテーションコンポーネントとして保持し、データコンテナによって提供されるデータをレンダリングします。

export default createContainer(({props})=>{ 
    Meteor.subscribe("data.fetch", props); 
    return{ 
    list: CollectionName.find().fetch(), 
    } 
}, PresentationComponent); 

説明:にcreateComponentがデータの反応性を確認しますと、それはpropsとしてPresentationComponentに取得したデータを送信しますスニペット以下

ホープことができます。

+0

運.......私は新しいコードをアップロードし、私は本当に経験豊富では反応しないのですか流星のユーザーはそうすることができますあなたはそれをチェックし、私がこの権利をしているかどうか教えてください。 –

+0

これは私の今のところです。コンソールには、「サブノートからの例外 - 最新ID 9GfWBt7xs5HRPNeoY TypeError:Notes.find(...)。sortは関数ではありません」というエラーがあります。それで、なぜconsole.log(this.props.list)のときに空の配列が返されるのですか?データコンテナの代わりに私の出版物に何か問題がありますか? –

0

あなたはmongodbネイティブ構文とMeteor mongo構文を混在させています。あなたが必要とする:

Meteor.publish('notes-newest', function() { 
    return Notes.find({},{sort: {$natural: -1}, limit: 10}); 
}); 

と、クライアント上の同上:まだ

list: Notes.find({},{sort: {$natural: -1}, limit: 10}); 
+0

私はこれを行うと、それは私が欲しいのと同じように動作しますが、ユーザーがドキュメントを挿入すると、リストの一番下に追加されます。 –

+0

'$ natural'は' .find()。hint({$ natural:-1})でmongodbで直接使用するように設計されています。 AFAIKでは、Meteorから '.hint()'にアクセスすることはできません。私がお勧めしたいのは、 'createdAt:'キーを定義し、そのレコードを作成し、それをソートするときに 'new Date()'に設定することです。 –

+0

ありがとう!私は小さなエラーに遭遇しますが、私はここで別個の質問に入れることにしました:https://stackoverflow.com/questions/46045393/meteor-sorting-by-timestamp –

関連する問題