这种模式的名称是什么?它甚至是最佳的吗?

时间:2016-09-12 05:27:44

标签: javascript node.js mongodb design-patterns mongoose

对不起,标题不是更具体。我在Javascript中执行此操作有时会附加'一个匿名函数的变量,但我不确定词汇,所以我不知道如何更多地研究它或看看我做的是否是最佳的。

我使用MEO堆栈和Mongoose在模式的每个成员上创建一个getter函数。

testPlugin.plugin = function(schema, options){
    schema.set('toObject', { getters: true });
    schema.set('toJSON', { getters: true });

    // Simple counter
    let i = 0;

    schema.eachPath((path, type) => {

        /* Add a *different* getter to each member with a different value of `i` */
        type.getters.push(((i, type)=>{
                return function(value){
                console.log(i + ": " + path + ": " + type);
                return value;
            }
        })(i, type));

        i++;
    });
}

基本上,如果我只是通过'我'功能没有使用这样类似工厂的模式:

type.getters.push(function(value){
        console.log(i + ": " + path + ": " + type);
        return value;
    });

如果架构中有5个成员,则输出如下:

'5: path.path: String'
'5: path.path: Integer'
'5: path.path: ObjectID'
'5: path.path: String'

(请注意共享号码和路径,因为这些不是单独存储的') 而不是将值存储在'因为它在函数中,当在模式上执行时会追溯到像

这样的东西
'1: patha: String'
'2: pathint: Integer'
'3: _id: ObjectID'
'4: path.path: String'

所以我每次通过从自动执行的父函数返回一个函数来返回一个新的独立函数...这是正确的还是我在这里过度杀戮?无论如何,代码看起来都很混乱。

再次,只是真正寻找这个模式的名称或我应该使用的模式。我看到类似的东西,但我忘了。

提前致谢。

0 个答案:

没有答案