なぜMeteor.jsは独自のIDアルゴリズムを使用していますか?Meteor.Collection.ObjectID()とMongoDB ObjectId()
なぜMongoDBのObjectId()を使用しないのですか?
なぜMeteor.jsは独自のIDアルゴリズムを使用していますか?Meteor.Collection.ObjectID()とMongoDB ObjectId()
なぜMongoDBのObjectId()を使用しないのですか?
あなたがそれを使用することを選択した場合流星は、オブジェクトのidのために同じ方法を使用しています。
Meteor.Collection.ObjectID()
がちょうどMeteor.Collection
名の下のMongoDBのObjectID
その同じです。 EJSONを使って普通のJSONのオブジェクトIDをクライアント側に保持します。基本的には流星と2つのデータベース
Minimongo
があるので、これは、クライアント側のMongoDBののキャッシュの一種です。ブラウザーがロードされると、サーバー上のメインmongodbからこのデータにダウンロードされます。変更が行われると、サーバーにプッシュされます。
サーバーのMongoDB
これは
ので、サーバー上の10genから元のMongoDBあるので、流星がMeteor.Collection
でMongoDBの機能をラップして、両方で同じコードを使用できるようにする必要があり、これら二つのデータベースのクライアントとサーバー。
デフォルトでは、meteorはオブジェクトIDを使用しません。オブジェクトIDはランダムな英数字のテキストを使用します。これはあなたのhtml属性であなたのURLとIDのIDを簡単に使うことができるように行われます。
new Meteor.Collection.ObjectID()
を使用すると、サーバエンドでmongodbのObjectID仕様を使用するObjectID
オブジェクトが得られます。オブジェクトIDのタイムスタンプ値は保持されませんが、実際には害を及ぼしません。
0.9.1以来、Meteor.Collection.ObjectID
の代わりにMongo.ObjectID
を使用することを示唆しています。基本的にどちらも同じです。 命名規則の変更点については、history.mdを確認してください。
ええ、これを見ましたが、_id文字列を取得する方法を考え出すのは苦労しました。以下を使用した。 'var newID =新しいMongo.ObjectID; item._id = newID._str; ' このトピックのおかげで、http://stackoverflow.com/questions/19236685/how-do-i-use-new-meteor-collection-objectid-in-my-mongo-クエリー付きメテオ – yankeyhotel
私はObjectIdsで正規表現 '/^[0-9a-fA-F] + $ /'が 'false'を返していた理由を理解しようとしました...あなたはメテオで"ランダムな英数字指定された文字列が有効なIDであるかどうかをテストするロジックはありますか? –
@BradMあなたは '/^[A-Za-z0-9] {17} $ /'が動作するかどうかを調べることができます。また、完全に英数字ではなく、_idに0または1が見られることはありません。私はlと1のように視覚的に混ざり合うことができる数は使われないと思う。 – Akshat