2

ノードmongodbネイティブドライバーを使用してドキュメントをmongodbに挿入しています (原文のままです!)。私のオブジェクトは次のようになります。

var x = {
  field: 'value',
  _nonPersistentField: 'Do not save that'
};

私が達成したいのは、アンダースコアが前に付いたすべてのフィールドが保存されないようにすることです。上記の例では、「_nonPersistentField」は保存しないでください。

これらのフィールドがノードmongodbネイティブに保存されないようにする方法(Object.definePropertyを除く)はありますか?

4

1 に答える 1

2

プリパーサーはどうですか?savemongoクライアントから使用する代わりに、次を使用します。

function save( obj, callback ) {
    var tmp = {};
    Object.keys( obj ).forEach( function( key ) {
        if ( key.substr( 0, 1 ) !== '_' ) {
            tmp[ key ] = obj[ key ];
        }
    } );

    // Now that the object is filtered, use mongodb's client
    mongodb.save( tmp, callback );
}

この方法を使用すると、次の代わりに、オブジェクトの作成などが表示されません。

mongodb.save( obj, function( err, results ) {
} );

使用しているもの:

save( obj, function( err, results ) {
} );
于 2012-06-21T07:30:49.537 に答える