如何从集合定义中了解我们的环境?

时间:2013-07-07 17:10:02

标签: docpad

我想要类似下面的伪代码:

collections:
    posts: function (database) {
        var match = env === 'debug' {layout: 'post', published: true} ? {layout: 'post'};
        return database.findAllLive(match, {date:-1});
    }

1 个答案:

答案 0 :(得分:0)

您需要使用this.docpad.getEnvironments()(JavaScript)或@docpad.getEnvironments()(coffeescript),它会在我们当前使用的环境中返回一个数组。根据您的代码意图,您需要检查debug是否在其中。

在您正在使用的JavaScript中:

collections: {
    posts: function (database) {
        var match = this.docpad.getEnvironments().indexOf('debug') != -1 then {layout: 'post', published: true} ? {layout: 'post'};
        return database.findAllLive(match, {date:-1});
    }
}

在标准的CoffeeScript中

collections:
    posts: (database) ->
        match =
            if 'debug' in @docpad.getEnvironments()
                {layout: 'post', published: true}
            else
                {layout: 'post'}
        database.findAllLive(match, {date:-1})

值得一提的是,您可能也对docpad.getDebugging()感兴趣,它会返回一个反映包含-d --debug CLI标志的布尔值。