問題タブ [meteor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1388 参照

json - Meteor サーバーから JSON API リクエストを行う

サーバー上の別のサービスからJSON APIリクエストを作成するMeteorアプリケーションがあります。

JQuery パッケージと $.getJSON を使用してみましたが、JQuery パッケージはサーバーに影響を与えないため、これが機能しないことがすぐにわかりました。

サーバーに JSON リクエストを送信させるにはどうすればよいですか?

0 投票する
3 に答える
20360 参照

javascript - サーバーでCollection.insertを呼び出す場合、「Meteorコードは常にファイバー内で実行する必要があります」

server/statusboard.jsに次のコードがあります。

基本的には、JSONフィードからデータを取得し、それをコレクションにプッシュしようとします。

Meteorを起動すると、次の例外が発生します。

そのエラーが何を意味するのかよくわかりません。誰かが何かアイデアを持っていますか、または別のアプローチを提案できますか?

0 投票する
1 に答える
612 参照

meteor - Meteor のパッケージ クラス スコープ

パッケージの作成に問題があります。おそらく誰かが助けてくれます。新しい npm モジュールを含めて、それらを Meteor クラスに追加しようとしています。

たとえば、package.js で次のように宣言しました。

これは正常に動作します。これをコンソール ログに記録すると、オブジェクトが表示されます。ただし、内部Package.on_use(では Meteor クラスを使用できません。Meteor is not defined - Meteor クラスを使用する前に、スタートアップ パッケージを使用してみました。

以下を使用して含まれるjsファイル内api.add_file:マングースクラスを取得できません: mongoose is not defined

0 投票する
1 に答える
1686 参照

meteor - テンプレートではなくコレクションの変更をサブスクライブする

私は流星に非常に慣れていないので、ここで非常に基本的なものが欠けている場合は申し訳ありません.

流星をチェックするための非常にシンプルなテキストパッド スタイルのアプリを作成するのは楽しいだろうと思いました。todo アプリを使用して、データ構造を「リスト」と「todos」ではなく「フォルダー」と「ドキュメント」に変更したので、フォルダーのリストがあり、フォルダーをクリックするとドキュメントのリストが表示されますそのフォルダに。

次に、リスト内のドキュメントの 1 つがクリックされたときに、単一の「ドキュメント」の「コンテンツ」属性を表示するコードを追加しました。

ace を使用して、ドキュメントのコンテンツにきれいな印刷を追加しています ( https://github.com/ajaxorg/ace )。ドキュメントのプレーンテキスト バージョンを含む非表示のテキストエリアを操作するように ace を設定しました。エディター オブジェクトはこのテキストを取得し、きれいに印刷します。

ace の問題は、ドキュメントの内容が変更されるたびに ace エディターを含むテンプレートを置き換えたくないということです (再初期化に 0.5 秒かかるため、すべての文字が入力されるたびにひどい経験になります!) . 代わりに、テキストエリア テンプレートを更新してから、ace API を使用して、テキストエリアの内容に基づいて入力を更新するようエディターに指示します。

さて、これは問題へのアプローチとしてはおそらく間違った方法ですが、最終的に 2 つのテンプレートを使用することになりました。1 つ目は、基礎となるモデルに反応する doc.contents を含むテキストエリアを含みます。

2 番目のものには、ace がきれいに印刷されたテキストを表示するために使用する「editor」div が含まれています。

最初のテンプレートは (すべてのクライアントで) ユーザーが入力するたびに更新され、2 番目のテンプレートは新しいドキュメントを読み込むたびにのみ再読み込みされるという考え方です。

エディターの div にテキストを入力すると、 が呼び出されDocs.update(doc_id, {$set: {content: text}});、各クライアントのテキストエリアの値が更新されます。これまでのところすべて順調です。

私がやりたいことは、変更を行ったクライアント以外のすべてのクライアントに対して、そのドキュメントの変更をサブスクライブし、変更されたばかりのテキストで editor.getSession().setContent() を呼び出し、テキストを取得することですテキストエリアから、それを使用してエディターを埋めます。

テキストエリアを含むテンプレートから呼び出しを行うことで、これを実行しようとしました (ドキュメントが更新されるたびに変更されるため、上記の #1 を参照してください)。ただし、エディタで値を変更すると が再度呼び出されるため、クライアントは無限ループに陥りますDocs.update

明らかに、これはテンプレートをレンダリングするときに発生しないため、これを防ぐことができる魔法が meteor にあると想定していますが、その方法はわかりません。

何かご意見は?

ティア!

0 投票する
1 に答える
810 参照

meteor - Meteor アプリの要素保持バグ

Meteorで見守り型のリアルタイムチャットサービスを作ったのですが、Meteorに組み込まれている要素保存機能がうまくいきません。基本的に、現在のチャット メッセージ div は、その中のテキスト入力がフォーカスされている間は更新されないようにする必要があります。ドキュメントには次の指示があります。

手書きアプリケーションのもう 1 つの厄介な問題は、要素の保存です。ユーザーが要素にテキストを入力すると、その要素を含むページの領域が再描画されるとします。が再作成されると、フォーカス、カーソル位置、部分的に入力されたテキスト、およびアクセント付きの文字入力状態が失われるため、ユーザーはでこぼこの乗り物になる可能性があります。

これは、Meteor が自動的に解決するもう 1 つの問題です。フォーカス可能な各要素が一意の ID を持っているか、ID を持つ最も近い親内で一意の名前を持っていることを確認してください。Meteor は、それらを囲むテンプレートが再レンダリングされた場合でもこれらの要素を保持しますが、引き続き子を更新し、属性の変更をコピーします。

これらの指示に従って、入力中に入力フィールドが再レンダリングされないように、入力フィールドに一意の ID を設定しました。しかし、現在、次の2つの問題に直面しています。

他の人のチャット メッセージは入力中に更新されますが、自分のメッセージを入力している間、この更新は一時停止します。入力を止めるとすぐに (入力フィールドにフォーカスがある場合でも)、メッセージが再び更新され始めます。

新しいメッセージが作成され、その div が挿入されると、入力フィールドにフォーカスがある場合でも、メッセージが更新/再レンダリングされます。これにより、フォーカスが突然失われます。

これは、 http://babble.imの同じチャット ルームにいる 2 つの異なるコンピューター/ユーザーでテストできます。

これは Meteor コードのバグですか、それとも私のバグですか? どうすればわかりますか?

編集:

ああ、私は最初の問題の理由を見つけたと思います:

Meteor は通常、必要な更新をバッチ処理し、コードが実行されていないときにのみ実行します。そうすれば、DOM があなたの下から変更されないことを確認できます。反対の動作が必要な場合もあります。たとえば、データベースにレコードを挿入したばかりの場合、DOM を強制的に更新して、jQuery などのライブラリを使用して新しい要素を見つけることができます。その場合は、Meteor.flush を呼び出して、DOM をすぐに最新の状態にします。

ユーザーが入力している間にコードが実行されていたため、DOM が更新されていなかったと思います。使っMeteor.flushて修理してみます。では、2 つ目の問題はどうなるでしょうか。

0 投票する
3 に答える
30596 参照

javascript - Meteor JavaScript フレームワークはどのように機能しますか?

私はMeteorに出くわしました。それはわくわくするように見えますが、それがどのように機能するかを知りたいと思っています。つまり、従来の Web アプリケーションは次のように機能します。データベースからデータを取得して Web ページに動的に追加するスクリプトがサーバー上にあり、ユーザーが送信したデータは他のスクリプトを介してデータベースに追加されます。

しかし、これらは Meteor でどのように機能するのでしょうか? Meteor のさまざまな部分は互いにどのように関連していますか?

0 投票する
1 に答える
4510 参照

meteor - Meteor での cursor.observe({added}) の動作

データベースにデータが追加されたときにユーザーにアラートを表示しようとしています。だから私は書いた(クライアント側で):

そして、サーバー側のデータベースに新しいアイテムが追加されたときにアラートが表示されるだけでなく(これは正常だと思います:))、ページを更新すると、以前に追加された各アイテムに対してもアラートが表示されることがわかりました。Meteor は、起動時に Mongo データベースからすべてのデータを取得し (ローカルの Minimongo DB に入力するため)、ローカル データベースに追加された各アイテムに対して「追加」イベントを発生させると思います。

しかし、これは正常な動作ですか? サーバー上のデータベースに「本当に」追加されたアイテムのみを受け取るにはどうすればよいですか?

0 投票する
7 に答える
6589 参照

meteor - Meteor のテンプレート間で機能を共有する

同じ関数の戻り値を確認したい 2 つのハンドルバー テンプレートがある場合はどうすればよいですか? これを行う正しい方法はありますか?明らかに私はこれを行うことができます:

しかし、Template オブジェクトを介して直接これを行う方法はありますか? これはJavaScriptなので、任意のオブジェクトの任意のプロパティに関数を割り当てることができますが、試してみました:

もちろん、テンプレートはこの機能を見つけられません。

ベストプラクティスなどに興味があります。ありがとう!

0 投票する
1 に答える
11688 参照

javascript - テンプレートからオブジェクトのプロパティにアクセスするにはどうすればよいですか?

http://handlebarsjs.com/expressions.htmlによると、私はこれを行うことができるはずです:

しかし、これを流星で機能させることはできないようです。これが私のテンプレートです:

アイテムを返す JavaScript は次のとおりです。

nameはい、アイテムには実際に:-)というプロパティがあります。

これを行うと、Firebug に次のようなエラーが表示されます。ret is undefined

これは、evaluate.js まで追跡できます。

エラーの瞬間にret、オブジェクトを参照しwindowます。どうしたの?