1

Ace エディターを使用して Meteor で基本的な共同コード エディターを作成しようとしています。JavaScript は次のとおりです。 var file Meteor.startup(function(){

        Session.set("file", "fileID");
        var query = Files.find({_id : Session.get("fileId")});

        var handle = query.observe({        
          changed : function(newDoc, oldDoc) {
              if(editor !== undefined){
                console.log("doc was changed from ", oldDoc.contents, "to ",  newDoc.contents);
                editor.setValue(newDoc.contents);
              }
              handle.stop();
            }
        });         

    editor.getSession().on('change', function(e) {
        // update the File collection
        if(Session.get('file')) {
            Files.update({_id: Session.get("file")}, 
              { $set : 
                { 
                  contents : editor.getValue()
                }
              });
        }
    });     

});

エディターは苦労せずにデータベースを更新できますが、変更の監視とドキュメントの新しい値への設定を処理するクエリは、基本的にハングするだけで何もしません。問題は何ですか?または、一般的に、この問題を解決するためのより良い方法は何ですか(流星を使用してエースエディターを共同で作成する...自分でコーディングしたいと仮定して..隕石などを使用しないと仮定します)

ありがとう!

4

1 に答える 1

3

Meteor で ace エディターを直接使用すると、大量のコードを作成してデバッグしない限り、操作が遅くなり、ユーザー間のやり取りがぎこちなくなります。

もう 1 つのアプローチは、ShareJS スタックを Meteor にアタッチすることです。これは、ace と非常によく統合されるためです。実際、Meteor で共同編集を行う他の方法を検討した結果、これを実行することになりました。

https://github.com/mizzao/meteor-sharejs

ここに (古い) デモがあります: http://documents.meteor.com

于 2013-08-16T00:44:39.873 に答える