1

mini-mongo を使用してドキュメントをコレクションに挿入する場合、ユーザーは _id フィールドを渡すことができ、その _id は文字列または ObjectID である限りドキュメントに設定されます (既存の ID と衝突しません)。それは私には賢明ではないようです。ドキュメントの _id が常にサーバーによって生成されるようにしたいので、文字列 (潜在的に異なる長さ) と ObjectID の両方が _id として存在するデータベースになってしまうことはありません。

これを達成する簡単な方法はありますか?現在、私が考えることができる最善の方法は、拒否ルールで id をチェックすることです (_id は Meteor によって既に設定されているか、ユーザーが指定した値になります)。それが必要なタイプ/長さでない場合は、変更しますただし、ID の重複を避けるためのチェックも必要です。それほど難しくはありませんが、これほど基本的なものとしては複雑すぎるようです。

4

2 に答える 2

0

私の回答を確認すると、あなたの答えは次のとおりです。

すべての挿入を拒否します。フィールドが指定されているかどうかをチェックする 、 をmethod作成します。collectionInsert(document)_id

Meteor.methods({
  collectionInsert: function(document) {
    if (document && document._id) {
      delete document._id;
    }
    // Returns the _id generated
    return collection.insert(document);
  }
});

今日のバージョンの meteor (0.8 以降) では、この場合、サーバーとクライアントは_idとにかく同じものを生成します。ただし、この方法を使用すると、クライアントがフィールド挿入をシミュレートし、生​​成されたサーバーのバージョン_idが信頼できるものであることを保証する必要があります。

于 2013-08-08T05:42:55.233 に答える