【问题标题】:Exclude fields from beeing saved in node mongodb native排除字段保存在节点 mongodb 本机中
【发布时间】:2012-06-21 17:28:29
【问题描述】:

我正在使用 node mongodb native driver 将文档插入 mongodb(原文如此!)。我的对象如下所示:

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

我想要实现的是,防止所有带有下划线前缀的字段不被保存。在上面的示例中,不应保存“_nonPersistentField”。

有没有办法(Object.defineProperty 除外)防止这些字段保存在 node mongodb native 中?

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    预解析器呢?不要使用来自 mongo 客户端的save,而是使用:

    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 ) {
    } );
    

    【讨论】:

    • 虽然关于那个解决方案,但我想避免创建新的临时对象实例。但我认为映射的性能影响可以忽略...
    • 创建对象的性能绝对不会成为瓶颈。没那么贵:)
    • 使用这个函数,你甚至没有“看到”对象的创建。您只需像 save( obj, function( err, results ) {} ); 一样正常编码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2016-05-21
    • 2021-07-12
    • 2015-03-10
    相关资源
    最近更新 更多