检查 Nunjucks 中的对象是否为空

Check if an object is empty in Nunjucks

所以我在 Node.js 应用程序中使用 Nunjucks 作为模板引擎。

我有一个我们称之为 var 的对象,它可能为空也可能不为空。

当它为空时,如果我这样做 {{ var | dump }} Nunjucks 正确显示它是一个空对象,显示 {}.

问题是,我找不到任何方法来使用 Nunjuck 的 {% if condition %} 语句检查对象是否为空。我已经尝试了 var.lengthvar | lengthvar | first 和简单的 var 作为条件,但是 none 有效,它们都只是评估为真(或 false),无论 var 是否为空。有谁知道如何解决这个问题?

编辑:使用 {% if var | dump != '{}' %} 确实有效,但似乎是一个非常 hacky 的解决方案...

编辑 2:我最终只是为满足我需要的对象创建了一个自定义 empty 过滤器:

env.addFilter('empty', function(object) {
    return Object.keys(object).length === 0;
});

最近在 Nunjucks 2.5.0 中添加了对使用 length 过滤器访问对象长度的支持。

所以你现在可以使用:

{% if var|length %}