【问题标题】:Expecting 'ID', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'INVALID'期望 'ID'、'STRING'、'NUMBER'、'BOOLEAN'、'UNDEFINED'、'NULL'、'DATA',得到 'INVALID'
【发布时间】:2019-06-17 17:47:19
【问题描述】:

我想获取我的 github 帐户的总星数,但是当我运行我的服务器客户端时,会出现一条错误消息:

... data-increment="{{ 元数据[stargazers_ ----------------------^ 期望 'ID'、'STRING'、'NUMBER'、'BOOLEAN'、'UNDEFINED'、'NULL'、'DATA',得到 'INVALID'

我使用过快递服务器,带有用于渲染的把手

function parseData(response, user) {
    var checkLang = {};
    const metadata = response.reduce(function(acc, currentItem) {
        acc.stargazers_count += currentItem.stargazers_count;
        if (checkLang[currentItem.language]) {
            checkLang[currentItem.language] = checkLang[currentItem.language] + 1;
        } else {
            checkLang[currentItem.language] = 1;
        }
        return acc;
    }, { stargazers_count: 0 });

    metadata["languages"] = Object.keys(checkLang).map(item => {
        return {
            value: (checkLang[item] / response.length) * 100,
            title: item
        };
    });

    metadata["mainlanguage"] = Object.keys(checkLang).reduce(function(a, b) {
        return checkLang[a] > checkLang[b] ? a : b;
    });

    return metadata;
}

route.get("/:id", function(req, res) {
    axios
        .get("https://api.github.com/users/" + req.params.id)
        .then(user => {
            axios
                .get("https://api.github.com/users/" + req.params.id + "/repos")
                .then(response => {
                    var getMetadata = parseData(response.data, user.data);

                    res.render("private", {
                        response: response.data,
                        user: user.data,
                        metadata: getMetadata
                    });
                })
                .catch((e) => {
                    console.log(e);
                    res.render("404");
                });
            })
            .catch((e) => {
                console.log(e);
                res.render("404");
            });
        });
});

result.hbs

<div
    class="meta-value numscroller"
    data-max="{{ metadata.stargazers_count }}"
    data-min="0"
    data-delay="1"
    data-increment="{{ metadata[stargazers_count] / 10 > 0 ? metadata[stargazers_count] / 10 : 1 }}"
>
    {{ metadata.stargazers_count }}
</div>

我希望它显示总星数。

【问题讨论】:

    标签: javascript handlebars.js express-handlebars


    【解决方案1】:

    问题是由您的车把模板引起的。在属性data-increment 中您使用的是metadata[stargazers_count],这会导致失败。

    请注意,在您的车把模板中放置大量逻辑是不可取的。因此,为了解决您的问题,我将计算 increment 值并将其添加到您的 metadata 对象中,如下所示:

    function parseData(response, user) {
        var checkLang = {};
        const metadata = response.reduce(function(acc, currentItem) {
            acc.stargazers_count += currentItem.stargazers_count;
            if (checkLang[currentItem.language]) {
                checkLang[currentItem.language] = checkLang[currentItem.language] + 1;
            } else {
                checkLang[currentItem.language] = 1;
            }
            return acc;
        }, { stargazers_count: 0 });
    
        metadata["languages"] = Object.keys(checkLang).map(item => {
            return {
                value: (checkLang[item] / response.length) * 100,
                title: item
            };
        });
    
        metadata["mainlanguage"] = Object.keys(checkLang).reduce(function(a, b) {
            return checkLang[a] > checkLang[b] ? a : b;
        });
    
        metadata.increment = metadata.stargazers_count / 10 > 0 ? metadata.stargazers_count / 10 : 1;
    
        return metadata;
    }
    

    我正在添加一个 increment 属性,其中包含您尝试在车把模板中计算的值。

    现在你的车把模板只需要使用这个属性:

    <div
        class="meta-value numscroller"
        data-max="{{ metadata.stargazers_count }}"
        data-min="0"
        data-delay="1"
        data-increment="{{ metadata.increment }}"
    >
        {{ metadata.stargazers_count }}
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多