8

簡単な更新をしようとしています

Collection.update(id, {$set:{name:value}}); 

あるいは

Collection.update({'_id':id}, {$set:{name:value}}); 

idただし、が従来のmongodb IDの場合、コレクションは更新されません。これは、流星自身が一意のIDを使用している場合にのみ機能するようです。どうすればこれを修正できますか。meteorがmongo自身のid構造を受け入れることは可能ですか?

4

2 に答える 2

7

その通りです。MeteorのDDPプロトコルは、Mongoなどの非JSONタイプをサポートしていませんObjectId。これが問題であることはわかっています。これは私たちの最も古い未解決の問題であり、ロードマップにあります。

この問題を解決する「簡単な」クイックフィックスは確かにいくつかありますが、特定の短いものではなく、他の非JSONタイプ(日付、バイナリブロブなど)を処理するようにプロトコルを拡張するコンテキストでこれを行うことをお勧めします-タームハック。

于 2012-12-14T00:19:00.417 に答える
6

新しいObjectIDを使用してIDをmongodbオブジェクト(サーバー側)に変換してから更新することができます。:

var ObjectID, require;

require = __meteor_bootstrap__.require;

ObjectID = require("mongodb").ObjectID;

Meteor.methods({
  SomeUpdate: function(upd) {
    var id;
    id = new ObjectID(upd['_id']);
    return SomeDB.update({
      _id: id
    }, {
      $set: {
        field: value
      }
    }, function(res) {
      return console.log(res);
    });
  }
});
于 2012-12-17T09:47:18.803 に答える